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.
Lazily populate columnNameToIndexMap when accessing so that clients c…
…an use the value without causing setupColumns to be called first.