Standardize handling of "---" marker lines

Before, I'd never defined what happens to that opening "---".
get_yaml_text() was returning it with the rest of the YAML text.
Now, the opening "---" is always stripped and is documented as such.

get_yaml_text() should return a valid YAML document. The spec allows me
to include the opening "---" or not. I'm not sure why I chose to do that
initially, but it doesn't seem to make sense now.

As a result of that change, we always make a simple and proper
distinction between an empty section and none at all.
Objects may now only be created from strings

I was trying to be flexible and convenient. Since it's now so easy and
common to slurp whole files into a scalar (with File::Slurp,
Path::Class, and others), it's not so useful to do the I/O inside the
module anymore.

Also, this means I no longer have to worry about the encoding of the
disk file that I'm not reading. :)

Thanks to David Golden for the suggestion.
Speed up by slurping data section

Your use-case probably doesn't call for loading the same data over and
over again for 20 seconds. Still, it's a substantial improvement:

Benchmark changes on a 4K input, 20-second runtime:

                    Rate line-by-line       slurpy
    line-by-line 16163/s           --         -43%
    slurpy       28273/s          75%           --

Benchmark changes on a 64K input, 20-second runtime:

                    Rate line-by-line       slurpy
    line-by-line  1894/s           --         -88%
    slurpy       15504/s         719%           --
Text::FrontMatter::YAML 0.04