Fix UserDetail association and use counter_cache

1. Let Rails handle counter_cache.
2. Use belongs_to instead of has_one through:

Before:

```console
> Thredded::Post.first.user_detail
SELECT `thredded_user_details`.* FROM `thredded_user_details` INNER JOIN `accounts` ON `thredded_user_details`.`user_id` = `accounts`.`id` WHERE `accounts`.`id` = 127 LIMIT 1
```

After:

```console
> Thredded::Post.first.user_detail
SELECT `thredded_user_details`.* FROM `thredded_user_details` WHERE `thredded_user_details`.`user_id` = 127 LIMIT 1
```