Clean up the cache loader 

Re-factored the cache loading so it is a bit simpler to use, doesn't really make any difference but could be useful if someone wanted to use it outside of this project.

Get a definition through ctx.definitions.get(GameObject/Npc) (you can still go by id `.npc(int)` / `.object(int)` also you can do `ctx.objects.select().select(ObjectDefinition.name(ctx, "Door")` to filter by name using definitions.

Changed some osrandom filters to use the definition for when name may not be loaded (should probably change them all)