Proper cache validation for resource assets

Implements proper cache validation for resource assets, based on last modified date of assembly. Not sure if this is the best approach; the IAssetCacheValidator doesn't know which assembly the resource belongs to, so it creates a dictionary of resource name to assembly name and uses that to look up the correct assembly. This isn't foolproof and may not work properly in every scenario.