Additional tests and and memory over-read validation.

This adds a few improvements recommended by Mike Ash:

- Tests for 0-length strings, as well as strings that start with
  invalid byte sequences.
- A minor rework of the tests to lay out the test string bytes at the
  end of a page, directly before a PROT_NONE page. This allows us to use
  page protections to assert that over-read does not occur.

Issue: PLCR-532