* This allows better identification of a shader from its reflection
bundle. The entry point was already 'optionally' in the debug info
struct which is no longer a great location for it.
* For APIs where the entry point isn't contractual and it might not be
listed, instead we just fall back to 'main'. This means that the UI
or anyone fetching the info can be guaranteed that some sensible entry
point will be listed.
* Also for the debug info, remove the 'entryFile' index and instead just
guarantee that as much as possible the entry point will be in the
first file in the list.
* Things like addressing modes, stencil operations, and other things the
UI didn't need to know about previously were only exposed as string
values to be passed through and displayed.
* Now we describe these with enums so the API can be properly
introspected and used by consumers that might want to know the actual
values of these states.
* Historically there was no bindpoint mapping so it was convenient to
just pad the cbuffers array so that the elements in it were indexed by
their bind point. It doesn't make any sense anymore especially with
D3D12's bind model, so just remove it and roll bind points into a
struct member.
* We make shaders into fake resources with IDs, so they can be
identified individually (for replacement, fetching reflection data,
and things like that). This is a little but ugly but worth it for the
simplicity it will provide everywhere else.