Add total() to ORM\Query.

This method makes it much easier to get COUNT(*) for queries. This will
make removing paginateCount() from PaginatorComponent.
Add hasField() to Table class.

This method is needed to build out PaginatorComponent, and has other use
cases as well.
Add test for find('list') with no fields.

This was a missing case, adding it in for completeness' sake.
Query::applyOptions should ignore null values.

Null values are often used when building dynamic query data to mean
that the key should be ignored.
Fix fatal errors when combining mapReduce() + first()

Query::first() relies on the one() method being implemented. The
ResultSetDecorator class that wrapps a MapReduce object does not support
this method resulting in a fatal error. Since we can't rely on
ArrayAccess or other array like interfaces being implemented we need to
convert the decorated Traversable into an array before we can pull
single results off.
Add count() and improve one() to ResultSet

one() should work even if the ResultSet has been serialized. Adding
support for count() as other parts of the framework expect that result
sets are countable.
Make the ResultSetDecorator implement similar methods as ResultSet.

Since the decorator is supposed to be an adapter between traversable
objects and the ORM\ResultSet class is should implement the same methods
as ResultSet. I think there is probably a separate interface that needs
to be extracted here.
Merge pull request #2339 from markstory/3.0-orm-improvements

3.0 ORM improvements