BiMap respects Map contract

Map.putIfAbsent and Map.remove should return the existing (or added)
values in the map. Previously BiMap was returning `null` on both of
these methods