Index population failures can be retrieved later

There was confusion about who had the role of saying that an index was in
the FAILED state. Also sometimes the cause for the failure wasn't kept.

Now when an index population fails that index is put in FAILED state and
the schema index provider is responsible for keeping the failure cause as
well as being able to return it later.
Extra work
Move FailureStorage to kernel, document and make it always sync to disk
Merge pull request #922 from tinwelint/2.0-handle-out-of-disk-population

Handle out of disk space during index population.