A week's worth of fixes for indirect:
- Added a `spawnprefab` editor-only command that allows to spawn (and pre-process) any prefab for testing.
- Moved indirect ConVar stuff to a proper indirect_instancing.cs
- Temporarily removed Core/* shaders from the compatibility list because indirect support is unclear.
- Revamped the indirect compatibility decision logic to be more granular and robust.
- Fixed invisible models when a renderer in instanceable but none of its materials are.
- Fixed NRE when encoundering null materials.
- Added TryEnqueueAdd which gives feedback about when enqueing a renderer failed due to incompatibility.
- Downgraded assertion exception when a shader wasn't found to just a warning.
- Reworked RejectReason structure to a struct fully interoperable with bool.
- RustRenderer now remembers original shadow casting modes so that they can be restored when indirect rendering is disabled.
- Store errors reported by TryEnqueueAdd in RustRenderer for debug purposes.
- Automatically disable RustRenderer if object is a shadow proxy.
- Automatically disable RustRenderer if any submeshes are incompatible with either indirect or fallback rendering.