Compatibility fixes:

- Spaces are required for separation on list items, ex: '- -blah' == array('-blah')
- Separation spaces are respected, ex: '- - - x' == array(array(array('x')))
- 'Null' keyword is accepted in addition to 'NULL' and 'null'

This commit also includes a bit of refactoring to make things a bit more effecient
and respect the DRY principle a bit more.
Merge pull request #29 from ryanuber/compatibility_fixes

Compatibility fixes