Add a coroutine-driven demuxer

This patch contains some prototype code for an error processor. It demuxes the
stream of errors into separate fatal & exception streams (since they adhere to
somewhat different formats) and parses errors of each type into a rich internal
representation.

Change-Id: I9a6877c0e84061994ad4a32897466b513c6b83ee