Move authorization checks out of the catalog

Prior to this patch, the Catalog performed authorization checks when users accessed
catalog object. The benefit of this approach was that authorization happened naturally
during analysis as objects were accessed. The downside is that it made the Catalog API
more complicated and resulted in propagation of AuthorizationExceptions anytime the
catalog was accessed. Ideally, the Catalog should just provide APIs for accessing
metadata.

With this change, the Catalog is no longer responsible for performing authorization
checks. Instead, the Analyzer keeps track of each privilege request and performs an
authorization step after analysis completes (either successfully or on error). If any
checks fail, an AuthorizationException is raised.

Change-Id: I199d5d2c276e7c963771be1782728b5603a01c67
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/3625
Reviewed-by: Lenni Kuff <lskuff@cloudera.com>
Tested-by: jenkins