use a single call to ImageMagick to get gps coords

The existing code calls identify four times in parrallel, once for
each of the four metadata fields it needs to access.
Merge pull request #2 from db48x/collection

clean up the Collection class
Merge pull request #3 from db48x/image-latlng

use a single call to ImageMagick to get gps coords
Merge pull request #5 from db48x/simple-protocols

Looks like this will make the code easier to maintain. Thanks!
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.