Adding initial parser files

Works in simple cases
Refactoring to use named arguments in the list
Adding matching
Turned argument assertions into decorators
Moving functions over to util
Updated base
Seperating test from base and util
Adding more functions
Bug hunting
Rewriting to statically have grammar, to make compiling easier latr