Don't fail on valueless expressions

Now it will simply return an ASTNode with no children.

Errors thrown for unparseable expressions like `#` are now caught explicitely and have better error messages