Further optimization: hash maps

Use C++11 std::unordered_map insteaf of std::map.
Access time to random element should be smaller.
On small instances, no evident improvement.
Hash function implemented for std::pair<,> is based on
the one implemented in boost.