Compiles the plain text into a form descriptor.

Form descriptor is an object with following properties:

* `signature` -- SHA256 hash of the `input`
* `text` -- a copy of `input`
* `html` -- an object containing three markup strings:

* `template` -- initial compilation result (correct values stripped)

* `prompt` -- an empty HTML form (correct values stripped,
solution blocks removed, sortables shuffled)

* `solution` -- correct values applied, solution blocks shown.

* `controls` -- an array of control descriptors.

@param input {String} source text
@returns {Object} Form descriptor
function(input) {
    this.reset();
    // Prepare form
    this.form = {
      signature: utils.sha256(input),
      text: input,
      html: {
        prompt: '',
        template: '',
        solution: ''
      },
      controls: []
    };
    // Inject formCompiler into inline compiler
    this.inline.formCompiler = this;
    // Render form
    this.form.html.template = this.append(input).outToString();
    this.prepareHtml();
    return this.form;
  }