Provided top level declarations

Now a program is a list of bindings.
In the compiling phase we will require that the function
main is declared. Changed example files accordingly.
Changed example programs

With the new grammar we need more curly braces
Used ErrorT monad to handle error in main program

Modifed tests (with the new AST we need more curly braces)
Some issues:
  the main binding might be parsed as an expression instead of a function declaration
Merge branch 'builtin-fun' into dev

Conflicts:
	example-ants/correct/test1.ha
	example-ants/correct/test2.ha