Bug fix: Dictionary::Erase.

`Erase` method in `Dictionary` class deletes wrong entry.
Map API changes and additions.

1. Modifies way maps internally fetch values.
2. Adds new methods `Has` and `Erase` to `MapObject`.
3. Adds two new API methods to `Map` class: `pop` which is used to
   remove entries from the map and `reverse` which is used to return a
   "reversed" copy of the map where keys are values and vice versa.
Merge pull request #99 from peelonet/map-api

Map api