Keep third party imports in their own namespaces in models.py

There are now four third party apps / libraries being used in core.models.
While the dotted module.submodule.attribute syntax is a little verbose, I
think it's a good idea to make the origins of these attributes explicit
for the sake of clarity.
Add a model for lessons (collections of topics)