Pyfilesystem support+refactor

This adds file system support, and is a refactor of the XBlock codebase as per a longer discussion with Cale, etc. Specifically, 

* We add a directory to XBlocks for reference implementations of standard services, blocks, and fields. In the future, runtimes may provide their own implementations instead (if we decide to do this for fields, this will be a major backwards-compatibility breaking change). 
* We add a process for prototyping services. 
* We add a prototype service+field type which adds pyfilesystem support. We explicitly mark this as a prototype implementation. We'll build this out, and see if there are issues. If there are, we will switch to an interface along the lines of one suggested by @ormsbee 
* We restructure the code such that only some fields are JSONifable, which does not make sense for things like blobs. This will break backwards-compatibility if we decide to do this, but for now, just shows deprecation warnings. 
I'd be okay with **kwargs. I went with this because you get just one namespace with **kwargs, where context lets you add non-contexty things without namespace collisions. Your call. I didn't think it through too deeply.