reinit for corrupt .git files
String scanning and Parsing
Added Eval Scaffolding
REPL skeleton
Eval Scaffold default; Parse "nil"
Lookup and Assign Local Variables
Apply parsed Atom evaled
Parse lambda expressions
WIP OpString Evaluation

Pulled Context into its own file

Need to:
 * find a way for context to hold precedence table
 * setup initial context in COntext.hs with correct associations
 * possibly make operators global (even temproarly for testing)
 * determine the layout of Function Values
BUG FIX: OpStr did not parse correctly
Shunting-yard algorithm implimentation complete
Monadic evaluation and error handling
Apply Functions

Defination of Context moved to AST.hs (May want to break up AST.hs)
Added builtin functions and connected them to the initial context in
  Main.hs

TODO:
 * find a way to make a generic version of `add` in Builtins.
Evaluate lambda functions

This is a first run at evaluating function constructs and is in some ways still
a work in progress.  In particular the implimentation in this commit does not
allow for any changes to the value of variables in the outer scope once a
function is defined -- though it does have access to these variables.  There is
also no way to effect the outer enviroment from within a function.  This makes
functions somewhat pure.  They can perform IO through built-in functions and can
read from their surrounding envrionment but cannot make changes to it.

Because of current parser limitations, only fixed arity functions can be
defined.

TODO
 * Block parsing
 * optional parameters and catch all parameters need to be parsed and evaluated
   correctly.

Notice: This commit is the first to contain the Author's Log.
Multi-Line REPL Prompt

The REPL now will allow multi-line inputs.  Input ends when a blank
line is inserted.  An initila blank line now enters the system
command mode.  In this mode typing "quit" or "q" will exit the
program.  Entering a blank line at the system command will return to
the default prompt.

TODO:
  * Add other commands to the system mode
  * add a mode for just tokenizing
  * add a mode for jsut parsing
  * load a file and evaluate it
  * current directory manipulation
  * possible debugging commands or a debug prompt
Block Parsing and Evaluation

Blocks can now be parsed and evaluated resulting in their last value.

In order to parse multi-line expressions it was nesecary to consider
the line ending marker TEnd which is added in the scanLine function
for lines without blocks.  When parsing tokens that represent multiple
lines it is necessary to look for the TEnd or TBlock.  Unfortunatly,
this caused a bit of confusion with assignments with statements as the
RHS.  Parsing the RHS consumed the block but the original expression
saw neither the block nor a TEnd.

To solve this problem, a Bool userState was added to the parser
(technically making it no longer context free).  When this is set a
block has been consumed and there is no need to look for a TEnd.

With block parsing in place we have switched over to a multi-line
parser as the default for parseString.

Parser error messages were cleaned up.

REPL:
added a parser mode that will parse, but not evaluate the expressions.

TODO:
  * add a tokens mode to REPL
  * start on classes and objects
  * parse non-parened arguments and paramenters
  * explore continuation passing style with continuation in context
    for functions to facalitate `return` statements.
Parser reports correct position of errors
Parsing If statements

The parser now understands all valid forms of the if expression.

An if expression can:
  a. Be on a single line with `then` and `else` seperating the
     consequnt and alternate
  b. Have the predicate on a line with an unmarked block as the
     consequnt and no alternate
  c. Have the predicate on a line with `then` and an expression
     or subblock and an optional `else`
  d. Have the predicate in a line with an unmarked naked block
     for the consequent and a manditory 'else' to close the consequent
     block.

examples:
  a. if a then b else c
  b. if a
       statement
       statement
       ...
  c. if a
       then b
       else c
  c. if a
      then
        statement
	statement
	...
      else
        statement
	statement
	...
  d. If a
         statement
         statement
	 ...
       else
         statement
	 statement
	 ...
Evaluate If statements

Added `true` and `false` to the list of keywords with the approprite
tokens, expressions types and values.

Made Value an instance of Eq where built-in types are implimented in
the obvious way and complex types are not handled. This allows for
built-in types to be checked without pattern matching.
More Operators (+,*,-)

Added more numeric operators.  Div and pow are being left until Object
bases operators are in place as they must deal more precisely with the
kind of number presented.

TODO
 * Move all operators to the appropriate classes and make them Left
   Callable
 * Add comparison Operators ( <, >, ==, etc)
 * Add boolian operators ( &&, ||)
 * Add Div and pow
 * trig functions
 * Identify Class for built-in primitives liek VInt and VFloat