Rails 4 support

Hi Dennis,

### Highlight of changes

* Jeweler replaced with regular gemspec. Sorry for breaking your workflow, however Jeweler stands in the way more than helping. Good thing that rubygems + bundler can do everything you used to with few commands.
* Conditional Gemfile to easily switch AR versions (3.1, 3.2, and 4.0).
* Updated AR syntax to Rails 3 and Rails 4 preferred syntax.
* Updated FactoryGirl.
* Updated database.yml to avoid some issues with merging keys.
* Fixed few issues for Rails 4 and updated tests.

There were more changes, commit messages have some more details.

### Running tests

```shell
RAILS_VERSION=4.0 bundle update
RAILS_VERSION=4.0 bundle exec rake test:sqlite3
```

### Outstanding issues

Rails 4 now does `SET SQL_MODE='STRICT_ALL_TABLES'` by default which is messing up with the following test

```shell
#<Class:0x007f87df0033e0>#test: #import with :synchronization option synchronizes passed in ActiveRecord model instances with the data just imported:
ActiveRecord::StatementInvalid: Mysql2::Error: Field 'title' doesn't have a default value: INSERT INTO `topics` (`id`,`author_name`,`created_on`,`created_at`,`updated_on`,`updated_at`) VALUES (100,'Jerry Carter','2013-06-15 01:06:01','2013-06-15 01:06:01','2013-06-15 01:06:01','2013-06-15 01:06:01'),(101,'Chad Fowler','2013-06-15 01:06:01','2013-06-15 01:06:01','2013-06-15 01:06:01','2013-06-15 01:06:01') ON DUPLICATE KEY UPDATE `topics`.`author_name`=VALUES(`author_name`),`topics`.`updated_on`=VALUES(`updated_on`),`topics`.`updated_at`=VALUES(`updated_at`)
```

setting strict mode to false (the way all Rails versions prior Rails 4 work) helps to avoid this issue.

I'm not sure how to deal with it, MySQL is clearly complaining on field title that does not have default value in database.

/cc @zdennis