Layering cleanups, object cleanups, kernel doc, context persistence, expose all engines to user, implement engine query uAPI, logical mapping, virtual engines, and parallel engines - rebase v2
v2 of this MR which is basically a rebase + a few DRM scheduler changes based on the input from the AMD people.