Require Perl v5.8.1

This commit removes conditional UTF8 behavior and converts
fully-qualified global variables to 'our' variables.

This paves the way for future commits to be stricter about
encoding behavior.
Improve read() for strict, safe behavior

Files are read unbuffered, raw, and with strict UTF-8 decoding.
A shared lock is used (on platforms that support it).
Improve write() for safe, strict behavior

The write() method now locks (if supported) and truncates only after the
lock is acquired.

Data is written untranslated with strict UTF-8 encoding.

Also removes write_utf8_string as this is no longer needed for write().
Stricter encoding handling

The 'read' method now dies if invalid Unicode characters are detected.

The 'read_string' method now expects characters and no longer tries to
guess how to decode data. Internally-inconsistent strings are now an
error.

Various related tests have been amended to match and new tests for
correct error handling have been added.
Consistent exception handling

YAML::Tiny errors now all return undef and set the $YAML::Tiny::errstr.

YAML.pm compatibility functions (Dump, DumpFile, Load, LoadFile) all
croak on error.
Lazy load Config and Fcntl

Loads them only if attempting to read or write from a file.
update documentation for work in progress on 2.000 release
add support for readng quoted keys
escape hash keys if necessary

Fixes #7 but really could use some tests