Fix harmless signed/unsigned comparison warnings in Firebird code.

At least MSVC warns about comparing unsigned std::string::size() result with a
signed value, fix the warning by simply converting the former to signed int.
Fix regression with statement re-execution when using Firebird backend.

Since the introduction of endOfRowSet_ flag in 4c3cb629, executing the same
statement again stopped working as the flag was never reset after fetching all
the results of the first execution.

Fix this by resetting it in firebird_statement_backend::execute().

Also add a test verifying that this does indeed work.
Use type big enough to store unsigned long in Firebird tests.

Using decimal(9,0) for the "ul" field of the test database translates into
using SQL_LONG type at Firebird API level which, in turn, translates into
"int" at C++ level. And casting int values to unsigned long doesn't work
correctly on LP64 architectures where the former is 32 bits while the latter
is 64 bits.

This resulted in test failures when reading values > INT_MAX from the
database, as could be seen in the unit tests before 4c3cb629 masked it by
casting to unsigned int first. This, however, was inconsistent with the other
data types and broke reading of doubles from the database and will be undone
soon.

So use another fix for the unit tests: just create the field using "bigint"
type (alias for decimal(18,0)) which translates into SQL_INT64 and doesn't
truncate the value when casting it. This is also consistent with the other
backends that mostly use decimal(20,0) for this field.
Fix reading negative doubles from the database with Firebird backend.

Mantissa of type SQL_LONG must be converted to "int", not "unsigned", when
reading from the database.

This corrects the changes of 4c3cb629 which did use int in other places where
SQL_LONG is handled but not here to compensate for a different bug with
handling of unsigned long which is fixed differently by the previous commit.

Also add unit a (Firebird-specific for now but it should be made common) test
for reading negative doubles.
Use standard "||" instead of "or" keyword in Firebird backend code.

MSVC doesn't support the use keywords for logical operators without including
<iso646.h> first. Instead of doing this and possibly running into more
problems on other systems, just use the standard C operators.