Use the page parameter rather than offset.

Return None for missing results
Dirty Hacking to hide some API bugs
Log some API bugs

number_of_page_results and the length of results are sometimes
different. Log if this happens, just in case
Replace ``type(x) == X`` with ``isinstance(x, X)``
Prepare tests for weird behaviour