Optional Obligatory tester

Now even ;) : avoids unreachable code warnings!

Now: (really _should_ work now ;) )
Moved all optional-obligatory-test related code from 'util' to 'test'.
Additionally modified "accepts_noneT" hack to require only addition of "ACCEPTS(methodName)" for any new method to be tested. The enum that is used for template specialization is now handled internally and does not have to be extended by coder.
Thus, if any new method is to be tested with "accepts_noneT" simply add anywhere in your code "ACCEPTS(methodName)" to namespace "test".

New optional vs obligatory test classes & methods have been implemented: each attribute of simple "attribute(..)"-pattern is tested whether it behaves in line with agreed optional / obligatory attribute behavior.
I.e.: an optional attribute must return either a vector, entity or boost::optional _and_ have a none_t-deleter overload - an obligatory attribute must _not_ return boost::optional and must _not_ have a none_t-deleter overload.
A brief summary is shown for all attributes - if an attribute is neither optional nor obligatory the test fails and the summary expands with details.
Not yet tested attributes are all those of more complex "getAttribute", "deleteAttribute", ... patterns - they require far simpler tests. Yet to be done: test with VC++.

Fixes isse #176