Streamline `to()` and `as()`.
Streamline `to()` and `as()`.

Stop implementing `field::as()` in terms of `field::to()`.  May be a bit
more efficient, but the main thing is that it's easier to follow.  Just
express `as()` in terms of `is_null()` and `from_string()`.

In the process, we lose a bunch of deafult constructions and copy
constructions.  So life may be a little bit easier for types which don't
have those constructors.

Finally, document the reason why you can't use `as()` or `to()` for
pointer types (other than C strings).  A need to clarify this came up in
the conversation around #373.

jtv/libpqxx,jtv/libpqxx,jtv/libpqxx,jtv/libpqxx