More tests and bug fixes for Muninn

* Fix a bug in ChanelInputStream.read() - it should be returning *unsigned*
  bytes wrapped in int's, but it was instead returning signed bytes, so the
  uint8 128 ended up being returned as int32 -128.
* Fix a bug in Muninn where, if we have an optimistic read lock on a page,
  and that page is evicted, then the PageCursor.retry() method wouldn't
  fault on the page but instead blindly take a pessimistic read lock on the
  page that is now either free or has been faulting into any random file page,
  and then the pessimistic read would succeed, exception the data that has
  actually been read is some completely random junk.