Extended Hinting

This pull request represents an implementation for a new hint (aka targeted feedback) mechanism designed to provide a coherent approach to hinting in all of the five most frequently used problem types: checkboxes, multiple choice, drop down, numeric input, and text input. There are four parts to this new mechanism: 

1) the documentation describing how the new hint material will be encoded in the XML representation of problems (see https://docs.google.com/document/d/1h1cWx24VWkYCdwQEV8rY2Jm1xcZZp6_EQQbzDqbrnks/edit#heading=h.obezscv16esk), 

2) a description of the new syntax added to the simple editor's markdown parser to allow a user of that tool to capture the hinting information in a way which will produce correct XML (see the link above),

3) the code changes which were made to the markdown parser (see problem/edit.coffee),

4) the code changes which were made to the response processing to extract the new hint material from the XML representation and add it to the html presented to the student (see responsetypes.py).
```python
if hintgroup is not None and hintgroup.get('hintfn'):
    hint_function_provided = True
```

Actually though, I'm kind of confused why you removed the existing logic. I think what was here before was doing the same thing, and was more straightforward. It returned early if hintgroup was None. I would actually just recommend reverting to the existing logic, unless I'm missing something:

```python
hintgroup = self.xml.find('hintgroup')
if hintgroup is None:
    # Return early if we know we're not looking at a hint group
    return
# hint specified by function?
hintfn = hintgroup.get('hintfn')
if hintfn:
```

I think that is just clearer than all this extra stuff and extra variables that you've added here.