remove old context system
Add some context-related tests
Remove unused tokenize function
Add $Context and $ContextPath (not wired up yet)
Support contexts in builtin code

- Add internal variables for the current context and context path.
- Add code to look up symbol names in $Context and $ContextPath.
- Implement logic to shorten names if the context they're in is
  accessible.
- When Python code tests symbol names via .get_name() or similar, make
  sure the name is qualified with System`.
Predefine True and False so they end up in System`

Otherwise True was taken as Global`True and didn't behave like
System`True, causing test failures.
Add --show-contexts option
Implement Context[]
Predefine All and None and qualify them where necessary
Allow context marks in a_b
Make x_ and Symbol["foo"] obey context resolution rules
MAYBE: store bad text in ScanError
MAYBE: change t -> Internal`IncrementTemporary in Increment
Add --no-readline option
test.py: Add --stop-on-failure option
Qualify more symbols with System`
Don't stringify expressions in notboxes messages

This test in the manual:

  >> MakeBoxes[squared[args___], StandardForm] := squared[args] ^ 2
  >> squared[1, 2]
   = squared[1, 2]
  ## different in LaTeX and MathML
  #> squared[1, 2] // TeXForm
   : Power[squared[1, 2], 2] is not a valid box structure.

tests that General::notboxes shows the full form of its argument. This
was implemented with str(expression), but that now includes contexts.

Fix this (while keeping the FullForm-like behaviour) by calling
FullForm on the expression.
MAYBE: test.py: Print other output (e.g. messages) if result is wrong
Fix BoxConstructError in Plot
Ensure user definitions dict is keyed by strings (not symbols)

Fix a case in Plot3D which was violating this assumption, and add
asserts to guard against this in future.