Refactor fractional timestamp literalization

Add Dataset#timestamp_precision private method holding the number
of decimal digits of precision supported by timestamps in the
database.  Use this to automatically handle the formatting of
fractional seconds, avoiding the need to override
format_timestamp_usec in the mssql and sqlanywhere adapters.

While here, cleanup the specs so they don't depend on the current
date/time values, which simplifies them significantly.
Add round_timestamps extension for automatically rounding timestamp values to database precision before literalizing

This can fix issues where timestamps are rounded down instead
of roundest nearest if the timestamp value is more precise than
the database supports.

I choose to add this as an extension as it requires creating an
extra object every time you literalize, and few people need this
behavior.