feat(parser): add support for ternary operator
feat(parser): change Parser to return null when one of the operands is null
feat(parser): throw when expected an identifier
feat(parser): add support for formatters
feat(parser): split parse into parseBinding and parseAction
cleanup(parser): add type annotations to all AST classes
refactor(parser): clean up tests