Ability to evaluate a python function

Can now pass a python function to TestProgram instead of a script.  The
function is evaluated using a process pool from the multiprocessing
package. This greatly speeds things up. The old way of passing a script
file is still available too.

Many changes to hosts.py to support this function.
recompile docs
Fix race condition in InteractiveHostMP. Other fixs

There was a race condition in InteractiveHostMP (maybe more than one)
Added a bunch of debug code. It seems to work but needs more testsing.

Fixed a small bug in constant.py
Fix race condition again.

Previous commit didn't fix it. Moved the part that adds a job to the
'running'  dictionary to be before the worker thread is actually
started. Probably sometimes the worker thread finished before the job
was added.
improvements to logging
Add TriangParameter
Update docs
Fix bug with running sweep when using control script

Previous updates to accomodate InteractiveHostMP broke InteractiveHost.
Fixed now.