We use Assembla at work to create a company knowledge base (we also use it for collaborating with customers). It has a wiki as well as file uploading tools, so most of the things you mention can be added or linked to.
It's not free (except for open source projects) but it's pretty reasonably priced.