Added dynamic jackson filtering

Conflicts:
	src/main/java/org/candlepin/resource/ConsumerResource.java
Added a dynamic filter interceptor

More general include/exclude query param usage

Conflicts:
	src/main/java/org/candlepin/resource/ConsumerResource.java
Change include behavior

This is a bit of a refactor.  include/exclude now work on all
abstract hibernate objects.  include and exclude can not be used
together.  Include creates a whitelist, while exclude creates
a blacklist
add setBlackList
Added support for filtering encapsulated objects.

Allow filtering encapsulated objects, even in lists.
Also added testing for the dynamic filter interceptor
Fix filtering when both types present

When using both DynamicPropertyFilter and HateoasBeanPropertyFilter,
if either one allows serialization, the object will be serialized.

In order to make them work together, I merged them.  DynamicpropertyFilter
is a supertype of HateoasBeanPropertyFilter.  It makes the setup much easier
as well.
Cleaned up code for review.  Support pool dynamic filtering

Lots of javadoc, name changes, removed blacklist/whitelist
in favor of including/excluding
Major filtering refactor

Removed all code from AbstractHibernateObject.  Now we keep
data in a Threadlocal static variable in DynamicFilterInterceptor.

Set default filter in JsonProvider to DynamicPropertyFilter, so
we can just add the JsonFilter annotation (any value) and
be able to filter the response.

Filter data is mapped per object to a list of attribute names.
Once we upgrade to a newer hibernate with working
JsonStreamOutputContext.getCurrentName(), we can build
the data in the filter itself by tracing the tree.

Created new MultiFilter class that combines jackson bean property
filters that inherit from CheckableBeanPropertyFilter, in order
to use multiple filters simultaneously, and control how they
interact.
fixed over-restrictive include

include of a subobject would not display all of its data.
use IdentityHashMap to avoid NPEs from hibernate objects
Moved filter logic into the filter

Now the filter interceptor only reports what comes in from the
query, and sends out the root object
Logging fixes after rebase
Use DynamicFilterData objects to hold filter data

DynamicFilterData objects are sent through
ResteasyProviderFactory to the filter. This allows
us to keep the logic and data in the filter data
class, and only do interception in the interceptor,
and only filter in the filter.
Reduce overhead when filters aren't in use
Merge pull request #432 from candlepin/ckozak/filtering

Ckozak/filtering