Started to rewrite traits and recursive traits

traits are shorter and easier to identify by using tags in a variadic
template

recursive traits can be automatically derived, which makes it much
easier to add new traits to be handed through the expression tree.
Ok, the first few lines of test code compile again.
Function tests compile again
Added extra_tables to recursive_traits
Added recursive_traits to select
Added tags missing and return_value

missing indicates that a statement part has yet to be added (e.g.
columns in a select).

return_value indicates that a statement part can be used as a return
value.
Determining column_list in a more generic way.

By finding the last parameter which is a return value.
Wrote down remaining steps for next release
A step towards turning select into a really variadic template
select is now really a variadic template

It is getting ready for customization to reflect vendor specific
statement parts, e.g. order by in update and delete for mysql.
Cleanup
SelectTypeTests compile again!
Migrated insert to be truly variadic
Migrated remove to being variadic
Adjusted update to be variadic
Minor cleanup.
Merge branch 'feature/rewrite_traits' into develop
Fixed test
Started to move statement-specific methods into the result provider classes

First method is: select_t::as()
Moved select-specific stuff into select_column_list

This is a major step towards a generic statements and generic statement
policies.