Fix btree resource management

Pages were not correctly released from the PageCache.
Fix memory leaks
Implement TaskPool and true asynchronous IO

Implement a TaskPool class that takes tasks and delegates them to
worker threads. Use this TaskPool to perform PageCache's
IO operations in a thread different from the main thread.

See issue #8.