explain score: fix explanation streaming

Complex explanations were always read as Explanations. Depending
on if the response was streamed or not the explanation was
therefore generated by a ComplexExplanation or by a regular
Explanation.
It's a little odd to see this boolean in the middle of the serialization.  I would expect something like this which is a flag for the type to be at the beginning of the data. 

e.g. `Explanation`:
`false`
value
description

And `ComplexExplanation`:
`true`
optional boolean
value
description

I think that could simplify the reading code a bit too.