------------------
* added graphparser._types.py module with ParserRule, ParserOutput,
OnMatchRule, WhiteSpace, and DirectedGraph classes
* added tests/test_graphparser.py
* added graphparser init and constructors: from_yaml_file, from_yaml,
from_dict. They are cascaded: from_yaml_file calls from_yaml, which
calls from_dict. Added a “raw” parameter, to from_dict as to whether
or the dict needs to be processed from easy-reading format (default
is True)
* added \_unescape_charnames to graphparser module to unescape
\\N{CHARNAME} strings (from files, especially)
* added graphparser/validate.py to handle validation of raw and
processed settings, using ``Cerberus``
* created graphparser/initialize.py to convert rules, onmatch rules,
and whitespace to internal types Rules, OnMatchRules, and Whitespace;
and, to generate the parser’s internal DirectedGraph
* added GraphParser.parse() method
* modified tests to fail
* updated contributing.md