(bug 43304) Mechanism for supporting different Snak types in the user interface

Introduces abstract prototype jQuery.snakview.variations.Variation. This represents a base for all
kinds of variations within jQuery.snakview for representing different kinds of PropertySnaks. These
implementations are responsible for representing parts of a certain kind of PropertyValue Snak and
offer a factory method for building an instance of that kind of Snak. When a jQuery snakview for
PropertyValue Snaks enters edit mode, it will offer a selector for choosing the Snak type, e.g.
"No Value", "Some Value", "Value" etc. When choosing one, an instance of the related
jQuery.wikibase.snakview.variations.Variation will be loaded, displaying the essential part of that
kind of Snak, which makes it different from other kinds of Snaks.

The jQuery.snakview has been refactored to work with the system described above, currently it
should behave as before until there are further variations for other kinds of Snaks implemented.
Also, the menu for choosing the Snak type has to be implemented properly.

- patch set 6: fixed 'cancel' of jQuery.snakview
- patch set 7: documentation cleanups
- patch set 9: rebase
- patch set 11: fixed strange behavior between edit mode transition. Added initialValue() function and improved 'valueviewstartediting' event which has another parameter with the new Snak now.

Change-Id: Ic4a7b16436689974b3f7b1c603e1f14de7e3451f
Merge "(bug 43304) Mechanism for supporting different Snak types in the user interface"