Way, way cleaner implementation
Clean up, add comments.  Fix potential bug.
Use table names derived from the objects
Address feedback from @hdgarrood
Fix failing tests
Oops, AND should go betweeen conditions, not at the end.
Tidy up comment
Merge pull request #67 from matthew-andrews/alternative

Performance optimisation of `available_tags` method