Add support for custom learners

I've resurrected the branch @mheilman created to add support for this.  I think it's in good enough shape that we could get it in the 1.0 release.

@mheilman do you have an example we could add? I think you had one for pylearn2.

This would resolve #92.