Initialize columnNameToIndexMap when accessed by client code

Lazily create and populate the dictionary when calling `-columnNameToIndexMap` so that it can be used directly before column values have been accessed.  Among other things, this makes it possible to check whether a column exists in a results set (see issue #79).

This does change the property from `(atomic, retain)` to `(readonly)`, so it will break code that sets this property directly instead of modifying the fmdb-provided dictionary.  That seems like a strange use-case to me, but perhaps there's a situation where it is useful that I'm missing.