refactor(parser) abstract parser

Parser isn't suitable for this case, parse is a process, not a instance.
Parse function will match a local file from a url, containing any other attribute like wrap, pkg and so on.
The match will pass to many rules, break when matched, rule can be customize also

Closes #11
refactor(parser) add more testcase
docs(parse) improve document for parse, rule
feat(util) spm_modules has priority than sea-modules
fix(standalone) fix minor problem about standalone

1. url should be string not object
2. get spm property from pkg.origin.spm
3. standalone should ignore that is not entry
fix(parse) remove toLowerCase supporting camelCase
fix(handlebars) handlebars-runtime should transport id
Merge pull request #14 from spmjs/refactor-parser

refactor(parser) abstract parser