Refactor reuse existing database connection
.Count() should always use ToSnake'd foreign keys.

It looks like gorm always uses the snake form of a column by
convention, as seen by searching DBName in scope.go. These counts
were erroring out without the ToSnake'd foreign keys.

Further, the code for has_many and has_one becomes the same (which
makes sense), so I combined the two cases.
Merge pull request #300 from jnfeinstein/master

.Count() should always use ToSnake'd foreign keys.
Fields are only cached when withRelation, so they should only be accessed when withRelation.

The result of .Fields() is quite different with and without withRelation.
I assume that if you call it without withRelation, you don't want the
fields that were cached when withRelation was true.