The engine now uses the new Req_Dispatcher.
Response methods are not added in an external function.

Lot of separation of code between engine.cpp and methods.cpp with
engine.h holding the common stuff and structs, etc.

The Req_Method and Req_Method_Base now return a response_result which is
just the variant type of the Response's result member. This way methods
don't have to make up an id that is going to be chucked anyway.
New poll_request implementation.

It now will continue on if there is a parse error in the json, checking
the next buffer in the vector.
Cleaned up Request and Response parsing and dumping code.

More comments have been added with a few rearrangements that make it
easier to understand. Additionally the Invalid_Request_Exception can
store a correctly parsed id, if it happened to be available.
If there is an invalid request it should be sent to the client no matter the id.
The Req_Dispatcher now handles invalid parameters.

Also removed the pong:: specifier on some other response construction
statement.
The engine now just lets the dispatcher Do-The-Right-Thing.

That is, it no longer adds a null_t value type to the id of an error
response, since ideally, only some errors are returned and that's only
if they were serious enough for the Req_Dispatcher to make them null_t
in the first place. Otherwise we don't want to spit out every error to
every notification, for instance.
The SDL_CreateRenderer call is now after validating the window creation.
Added a tad bit of documentation in external_io.h and plugins.h.
Added a suffix operator that converts a string literal to a vector<char>.

It's called _buf.
Added a Pipe_IO external_io that is basically a software implementation of a pipe.

This can be used for communication between subsystems of the engine, but
more importantly testing plugin implementations like Json_Plugin.
The Json_Plugin now provides access to it's contained io object.
If there is only one pending request, the poll_request function returned false.

Fixed that ;-)
Added some helper functions (is_null, operator==) for null_t and pong::Request.
Added some tests of the Json_Plugin class.
Not sure why there is a return statement in the main engine loop.
The ipc::Process::running var is now actually valid most of the time.

It's used to prevent bad pipe signals to the program.
New Core.Exit and some refactoring of the Core.Start method.
The Request parser now correctly parses missing ids.
The "Core.Exit" method now has a default return value.

Bad instruction or some signal like that was being thrown before.