Added a statistical profiler.

This reduces overhead to around 5-10%, which compared to the previous
profiler (which was 500-1000%), is quite a saving!
Fix statistical profiler classifying different lines of the same method
as different methods
Reorganise repo
Improved text output, including unicode box-drawing option
Use wall-time, not CPU time (aka `clock()`).

Profilers usually use clock() to measure performance. I consider this a
mistake. clock() does not measure time in IO or time waiting on
other processes such as databases.

clock() is designed to time CPU intensive work. However, since python is
often used for ‘glue’ code for complex systems, clock() misses the
point. In a web framework, often the majority of the time is spent
executing a db query, and this is valuable information.
Improve error handling when not on the main thread
Improve error reporting on Windows
Fix indentation issue with console output
Update README