Dirty attributes should not raise notice if not dirty (re-bugfix #245)

Looks like in merging stuff into our current branch from the master,
a bugfix got clobbered that prevented a PHP notice when calling
Model::attribute_is_dirty() on an attribute that wasn't dirty.
So it's back in here now.
Another clobbered bugfix (original #266)

A bugfix from the master that got clobbered in our branch when
merging in the updated caching stuff.
Column::cast() bugfix and unit test to cover it

We had made a customization to the Column::cast() method for
casting integers, where it would strip out any non-digits before
casting.  This is incorrect, because it was stripping out decimal
points as well, so whereas when casting as an integer 1.5 should
cast 1, it was actually removing the decimal before casting so
1.5 cast to 15!

Updated the regex to remove any thing that wasn't a digit OR decimal,
and also added some more test conditions to test that the folowing
integer casts worked:

1,000 => 1000
1,000.50 => 1000
Fix query values logging to prevent multiple log entries

An upstream addition to the query logging generates two log entries
for a query, one for the sql and then another for the values used
in the query.  I don't like getting multiple entries, because I like
to be able to count on the number of log calls as being the number
of queries that were run.

Our custom solution of passing the sql and the valuse to the logger
method doesn't work because it breaks the standard log message
convention that is used where the log() method takes just one
argument, which is a message to be logged.  The default implementation
used is the Pear::Log package, and this is what the unit tests
use as well, so if we change the args passed to the logging method,
then the unit tests bust.

This seemed like an all around good comprimise.