fix for statement caching issue

This is a proposed fix for the statement caching issue described in https://github.com/ccgus/fmdb/issues/6

My approach is basically what @mattstevens proposes in the issue thread:  Cached statements are now only dolled out when they aren't currently associated with an open FMResultSet.  Once an associated result set is closed the cached statement becomes available for reuse.

I added a simple test case to fmdb.m to validate the fix and confirm that it doesn't break statement caching altogether.  All tests in fmdb.m apparently continue to pass.  I ran no other regression tests to see if I somehow broke something else.

My fix uses __weak, but I provided a non-arc/non-weak compilation path.  But this is untested.

I believe this fix negates the need for the fix applied for similar issue https://github.com/ccgus/fmdb/issues/106.  But that fix doesn't conflict with mine.