Sanitize models' attributes/options before passing to bookshelf/knex

closes #2653
- rename 'opts' to 'options' for consistency
- enforce a strict, nearly-empty whitelist for BaseModel methods
- do the above by forgoing use of Base parent methods where necessary
- recreate class methods to manage their own whitelists
- create a class method on BaseModel that reports a model's attributes from schema
- override such class method in Post to manually whitelist 'tags' attribute