Fix behavior of Leaf context encoding and improve Leaf errors
This patch was authored and released by @gwynne.
Types which use superEncoder(forKey:) in their Codable conformance (such as Fluent models) can now safely be provided to Leaf views as context objects. In general, handling of context encoding is significantly improved.
LeafError now conforms to AbortError and DebuggableError for improved error UI/UX.