Improve error messages from Filesystem::readRandomBytes()

Summary: Fixes T4153. Primarily, raise a better error message on Windows. Also make the function a little stricter and a little better tested.

Test Plan: Unit tests.

Reviewers: btrahan, hach-que

Reviewed By: hach-que

CC: aran

Maniphest Tasks: T4153

Differential Revision: https://secure.phabricator.com/D7650