Refactors the ModulefileParser to an abstract parser and a strict impl

In preparation for a very lenient parser that will back up the
Modulefile editor, this commit splits the current parser into
an abstract parser that generates anonymous "calls" using the
jruby parser and a concrete StrictModulefileParser that interprets
those "calls" in order to populate a Metadata instance.

The commit also adds a flag to the ModuleName so that it can be
accept uppercase names. The Modulefile builder uses this to generate
warnings instead of hard errors when uppercase letters are encountered
in module names.
Ensures usage of "safe names" in dependency calculator pseudo nodes
Changes VersionRange to yield null instead of MATCH_ALL to empty string

The String representation of the MATCH_ALL version is '0.0.0-' which
doesn't look very nice in forms. In most scenarios it is better to
simply say that there is no version requirement than to explicitly
declare it with one that matches all version.