Custom hash-based linked list map which accepts no null keys nor null values,
where equality and hash code calculations are done based on passed
Equivalence function implementations for keys
and values, as opposed to relying on their own equals/hashCode/toString
implementations. This is handy when using key/values whose mentioned
methods cannot be overriden, i.e. arrays, and in situations where users
want to avoid using wrapper objects.
In order to provide linked list behaviour, entries are linked with each
other in a predictable order.