Sort out next()/exec()/iterator handling for results
Reporting for exceptions thrown in callbacks
Added and fixed test cases, mostly for callbacks
Made build slightly more flexible
Removed class `result`; functionality moved to `statement`

`result` didn't really correspond to anything in the sqlite3 C API.
Access to the results of a query there uses the `struct sqlite3_stmt`
which corresponds more or less to our `statement` class.

Because the C API doesn't really distinguish between a statement and
the results of a query, the attempt to split the functionality up
into `statement` and `result` didn't work out very well:

- Some functionality makes sense on `result` as well as `statement`
  (`col_count()` and other column functions for example) which
  duplicates functionality and can lead to confusion which one should
  be used.

- Actions on a `result` tends to modify the internal state of the
  associated `statement`, and actions on a `statement` modified the
  internal state of an associated `result`, since both classes were
  based on the same `struct sqlite3_stmt` internally. This often leads
  to non-obvious side-effects, which are confusing.

- Since the `result` depended on required it's associated `statement`,
  potential life time issued were introduced. Using a `result` after
  the associated `statement` got destroyed would cause undefined behavior,
  for example like this:

        result run_query(connection &c, const std::string &sql) {
           // A temporary `statement` is constructed and destroyed here,
           // leaving the returned `result` with dangling internal
           // references/pointers
           return c.prepare(sql).run();
        }

All in all the separation into `statement` and `result` didn't make things
clearer or easier to use, but instead added new possibilities to use the
library incorrectly and create subtle bugs. Having only one class should
make things more robust to use.
Use typedef in create_collation functions
Sort out exec()/run()/step()/next() functions
Some "documentation"
Remove not very helpful `pos` from `statement::row_iterator`
Header gets included anyway
Move implementation details to separate namespace
Some more documentation