An object used during command line parsing to hold the various intermediate
data steps.
<p>The 'output' of the update is held in 2 objects: input.hints which is an
array of hints to display to the user. In the future this will become a
single value.
<p>The other output value is input.requisition which gives access to an
args object for use in executing the final command.

<p>The majority of the functions in this class are called in sequence by the
constructor. Their task is to add to <tt>hints</tt> fill out the requisition.
<p>The general sequence is:<ul>
<li>_tokenize(): convert _typed into _parts
<li>_split(): convert _parts into _command and _unparsedArgs
<li>_assign(): convert _unparsedArgs into requisition
</ul>

@param typed {string} The instruction as typed by the user so far
@param options {object} A list of optional named parameters. Can be any of:
<b>flags</b>: Flags for us to check against the predicates specified with the
commands. Defaulted to <tt>keyboard.buildFlags({ });</tt>
if not specified.
@constructor
function CliRequisition(env, options) {
    Requisition.call(this, env);

    if (options && options.flags) {
        /**
         * TODO: We were using a default of keyboard.buildFlags({ });
         * This allowed us to have commands that only existed in certain contexts
         * - i.e. Javascript specific commands.
         */
        this.flags = options.flags;
    }
}