Make traces opaque
Traces are yielded by the kernel when an error occurs and can be used later to provide additional information such as error location in text. So far, the kernel::trace::Traceable trait uses directly a slice of Traces. This can be made opaque in order to ensure that only valid traces are used.
This however does not prevent a user from calling apply_trace on a arguments that are well-constructed, but have nothing to do with each other.