[Toolkit] Allow unloading assets by name.

* Add Unload(string assetName) to IContentManager.
* Move all asset path handling from ContentManager to FileSystemContentResolver so that the ContentManager is entirely ignorant of where an asset can be found.

The primary motivation behind this change is to allow me to implement asset reference tracking on top of the ContentManager in my own code so that I can avoid duplicates of assets in memory on my game server which dynamically loads and unloads maps as needed. I figured this would be useful to to others, too.

File system path handling has also been moved into FileSystemContentResolver since I believe the point of that is to keep the ContentManager ignorant of how its stream is being provided. It should be valid to provide an asset name that is gibberish as long as a content resolver can resolve it.