Add exception-throwing overloads for functions taking an std::error_code

Use std::errc::operation_not_permitted (EPERM) for reported nulls
Stop preferring static linking as it may(?) lead to license violation
Remove most of the dependency of jbson.
Now uses plain std::vector<char> in place of jbson::document.
Also removes some reliance on boost::optional.

Fix error handling for some cases.
Add test executable for api specific tests.
Start writing the README.md
Remove jbson dependency completely, outside of testing.
Add configurable library install dir suffix
Turn testing off by default
Remove mostly unneeded usage of boost::string_ref.
Highly doubt it brought any measurable benefit where it was used.
Cleanup execute_query a little.
Explicitly instantiate rather than specialise, then specialise with
internal functions.
Remove noexcept from functions involving std::string