Fix logic determining if compaction options need syncing

The compaction_strategy_options as received from the
`system.schema_columnfamilies` table are all string valued and
comparison to typed values (ints, floats) as defined in models results
in sync_table() issuning ALTER TABLE statements redundantly even if
there were no changes to compaction options.

This patch casts the values defined in models to strings to ensure they
compare equal as needed.

Additionally, this patch normalizes handling of the `min_threshold` and
`max_threshold` options for SizeTieredCompactionStrategy which exist
outside the `compaction_strategy_options` mapping and have different
names in the `system.schema_columnfamilies` table compared to the CQL
options.

A typo in the `BaseModel.__compaction_tombstone_threshold__` option is
also fixed.
bugfix: connection.setup - cast port to int
throwing timestamp options everywhere
added sure library, basic test setup
better class structure for the billions of tests i'm about to write
ensure we're only operating on a copy of the instance
tracking down issues with missing timestamp values
ensuring we store the timestamp on the insert statement
assignment statement saves the timestamp
standard insert seems to work with custom timestamp
standardizing on _timestamp across the board
fixed deprecated calls, it seems that timestamp is working but broke batch
working to fix batches
fixed brokenness...
delete is pushing timestamp in when it's specified
fixed timezone issue.  python must be on same TZ as cassandra when using timedelta and .timestamp
updated changelog
changelog
fixed batch queries
timestamp working in batch mode