Use a weak `NSHashTable` for managing open result sets

This change replaces the use of an `NSMutableSet` containing `NSValue` references for managing open `FMResultSet` objects. This eliminates the potential for crashes due to over-releasing result sets.