[#432][#403][#433][#422] Fix checking for column cache until db connects

Fix related to #432, #403, #433, #422 

Summary:  When ActsAsTaggableOn::Taggable::Cache is included, it conditionally adds tag caching methods when the model  has any `"cached_#{tag_type}_list"` column

Details:  ActiveRecord::Base.columns makes a database connection and caches the calculated
           columns hash for the record as `@columns`.  Since we don't want to add caching
           methods until we confirm the presence of a caching column, and we don't
           want to force opening a database connection when the class is loaded,
           here we intercept and cache the call to :columns as `@acts_as_taggable_on_columns`
           to mimic the underlying behavior.  While processing this first call to columns,
           we do the caching column check and dynamically add the class and instance methods

Also see
https://github.com/mbleigh/acts-as-taggable-on/issues/432#issuecomment-30769459

Very simplified description of error condition in console

```irb
# pre-PR behavior, methods loaded iff db connection exists when model loaded
# User loaded before db connection
ActiveRecord::Base.connected? 
=> false
 User.caching_tag_list_on?
=> NoMethodError: undefined method `caching_tag_list_on?' for User(no database connection):Class
ActiveRecord::Base.connection
=>  ActiveRecord::ConnectionAdapters::SQLite3Adapter 
 User.caching_tag_list_on?
=> NoMethodError: undefined method `caching_tag_list_on?' for User(no database connection):Class

# User loaded after db connection
ActiveRecord::Base.connection
=>  ActiveRecord::ConnectionAdapters::SQLite3Adapter 
 User.caching_tag_list_on?
=> ArgumentError: wrong number of arguments (0 for 1)

# post-PR behavior, methods loaded on db connection
ActiveRecord::Base.connected? 
 => false 
 User.caching_tag_list_on?
NoMethodError: undefined method `caching_tag_list_on?' for User(no database connection):Class
ActiveRecord::Base.connection
=>  ActiveRecord::ConnectionAdapters::SQLite3Adapter 
 User.caching_tag_list_on?
ArgumentError: wrong number of arguments (0 for 1)
```