I wonder if this should be explicitly typed as a case insensitive map.  Often when doing operations on `Map`, you lose the original map implementation.  After a few operations on the map, will it still be case insensitive?  Eg, will you still be able to remove an element from it case insensitively?  We notice this in particular with an implicit conversion of `java.util.LinkedHashMap` to a Scala `Map`, you end up losing the ordering after you map it, the solution in that case is to provide an implicit conversion to a `scala` LinkedHashMap type, and provide a `CanBuildFrom` for that type.  Not sure if `TreeMap` suffers the same problem.