Show javascript error vs server side error in the data explorer -- Related to #1293
Flip error and query that triggered the error + Show the query only if there are more than one query
Fix typo
Adds the starts of the explain code.
Adds a unittest for explain.
Pushes through tasks. They're now in the env_t.
Take an optarg for explain and return it in the Response.
Add unittest file.
Make tasks a little bit easier to handle.
Adds serialization of explain::task_t.

This means they now in theory can be sent over the network...
we just have to actually do so.
Convert enums in protocol.hpp to enum classes.
Threads explain through a number of layers.

They're now sent back in every read and write query if the results if
the explain global argument is set.
More work for moving tasks around.

This commit doesn't compile. The next step is to make it compile by
removing a lot of copying in the clustering layer.
Makes tasks copyable.

This is needed because we want to use them in query language responses
which we copy all over the place.
Steps toward pushing through the explains.
In theory explains now gets pushed through to shards.

Let's see if it actually works in practice.
Fix a couple of segfaults.
Adds a merge tasks method.
Finish tasks in tracer destructor.
First compiling commit of new explain system.