Make problem types pluggable.

This patch adds the ability for arbitrary packages to register
themselves with xmodule.x_module.ResourceTemplates as being providers of
boiler plate templates used for defining the types of problems
instructors can add to a course.  This allows third party add-ons to
define new problem types that can then be available to instructors to
use.

This patch is the result of discussion with Ned Batchelder on the right
way to approach this problem.  The solution provided here is,
admittedly, a little bit of a hack.  But the focus was on making a least
invasive fix to make something work, in anticipation that when problems
get moved into the newere XBlock architecture something a little nicer
will be in place.
Merge pull request #2247 from jazkarta/pluggable-problem-types

Make problem types pluggable.