clean up Collection class using ES5 features

Uses Object.create(null) to create an object that has no prototype
Uses Object.keys() to simplify the enumeration.

No longer needs to call hasOwnProperty on every access, because our
inner object has a null prototype change (it only has it's own
properties). Still calls hasOwnProperty for add/remove so that it
knows when to change the stored length.
look up message names in the protocol cleanly

it's much harder to read with indexOf. Also, fixed a typo in
importImage.
Merge branch 'simple-protocols' of https://github.com/db48x/OpenChat

Conflicts:
	server/openchat.js
fixed collection issues