Add Authorizable mixin, rework object heirarchy

Add model mixin Authorizable to handle user authorization of
model level permissions. Model has methods for validating
a user's ability to create, edit and delete.

Factor out UserTrackable class from Auditable to also be used
by Authorizable.

Add Authorizable inheritance to Plot and Tree, with test coverage.
Update permissions in tests and refactor setUp of each test to be
more DRY.

get_instance_permissions now optionally takes a model which,
if supplied, filters down permissions to those for a given model.