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. 
Because I presume the amount of context will probably grow. As we make these plug-ins, all the old ones will break when we add a new parameter they don't know about. 

It's not perfect, mind you, but it's better than (), as in the current code, and allows us to expand for a little while.