Extracting version to its own file so that the Rakefile doesn't break before running specs.

If source code is broken such that there's a load error anywhere in the source, the Rakefile will bail out early. This change ensures that the gemspec still has the proper version information without relying on the rest of the source code.
Add a read_count parameter to Arrays.

The `read_count` parameter is like `read_until` but supports the circumstance where a user may want to read zero or more values. `read_until`, unfortunately, does not allow the user to read 0 bytes since it performs the read before the comparison and this results in at least 1 byte read.