[Asset Store Versioning 2 of 3] Added VersionedAssetStore abstract class and filesystem versioned asset store.
Summary: Added an abstract class to handle storing versioned assets. This way the core API doesn't change, and doesn't require much plumbing on behalf of the user since the API will find the version itself.
Test Plan: Added new unit tests to AssetStore
Reviewers: sandyryza, yuhan
Reviewed By: sandyryza, yuhan
Differential Revision: https://dagster.phacility.com/D5082