Fix behavior of allocator_adaptor on NULL pointer
Renamed and moved container category
Refurbished options and options retrieval

Options of container are now responsible of computing their related
types and values. Moreover, the options fetching code is simplified
and put back the semantic tag in the spotlight.

Semantic tag (like tag::table_) now defines the actual mapping process
and defaulting process of option fetching. This lead to the upcoming
change of itnerface in container and related systems.

Unit Tests on options have been streamlined and completed.
Adapt container and container tests to new container interface

container now exposes their semantic through their type. This is
required so semantic of data are not tied to some implicit
settings requiring strange hoops to be set and retrieved.
Make table_ conformant to new semantic concept
Complete deduce_semantic behavior and tests
Fix friend declaration
Small fix in container_shared_ref adaptation
Renamed decude_semantic et al. to kind_of and fixed all related naming
Optimize kind_of for a few nodes
kind_of use faster proto::common_domain.

table_ etc.. inherits from container::domain so we can reuse
a function overload based best domain selection instead of
sorting base/derived relationship using MPL.
Made view/shared_view dependant on the Kind type instead of being named table_{shared_}view
Homogenize type interface between view, table and container