Optimisations and further updates to c++11 standards :smile:

Replaced hash_map with unordered_map

Added ProbabilityMap type ->  unordered_map<string, double>

Replaced SparseTransitionMatrix.second(i.e. Type)  with a pairing of a
ProbabilityMap and an int, where the Probability map is the sparse
representation of probabilities related to the SparseTransitionMatrix
key and the int is the total number of elements that went into
computing probability