Add hearts model and associate libraries

Adds a Hearts model with a "heartable" polymorphic association.
Any model having "heartable" has to include a counter cache for their
and has to "has_many" hearts as "heartable".

This is implemented here for libraries.