Add support for asynchronous loading of classes.

Dependencies between classes are listed in the manifest.json files.
These files list what classes are required to load other classes. Yet, each eval
of a class can trigger loading of a required class. This means that the request
for a particular class is only sent out when the class that needs it is loaded.

This patch adds a new function:
    runtime.loadClasses(classNames, callback);

This function creates a list of all required classes before doing any loading.
If the environment is the browser and a callback is provided, the list of files
is added as <script/> tags to the DOM. This means the browser can request all
files at once. The callback is attached to the onload trigger of the last
<script/> tag.

If no callback is provided, the files are still loaded synchronously.

runtime.loadClass is still present but redundant, since the runtime already
knows what classes are needed for other classes.

odf.html is adapted to use the new class.
Remove loadClass calls from class files. The load system reads the dependencies from the manifest.json files now.
Add comments and better browser detection.
Use clearer names for the functions that load the dependencies.
Merge pull request #274 from vandenoever/script

Load modules asynchronously via <script/> injection.
Make ops.StepsTranslator 100% typed.
Make ops.Member and ops.OdtDocument 100% typed.
Do not delete property for required keys.
Give callback function a clearer name.
Merge pull request #371 from vandenoever/stepstranslator

Make several classes 100% typed.
Use a simpler and reproducible algorithm for sorting classes in dependency order.
Make gui.EventManager 100% typed.
Make gui.SelectionView, ops.EditInfo, and ops.OpInsertText 100% typed.
Make ops.OpRemoveText 100% typed.
Make ops.OpSplitParagraph 100% typed.
Make the operations OpAddAnnotation, OpAddCursor, OpAddMember, OpAddStyle,  OpApplyDirectStyling, OpApplyHyperlink and OpInsertImage 100% typed.
Make some operation classes 100% typed.
Make OperationFactory 100% typed.
Make OperationRouter and TrivialOperationRouter 100% typed.
Make a large number of controllers 100% typed.