Fix leftover textarea bug

- Fix bug that leaves a leftover HTML textarea on the screen if you
  dismiss a label while in edit mode.
Add provision for label's editibility

- Add provision to support label's 'isEditable' property.
Update integration test

- Update integration test for label_view.
Draw Labels on top

- Add support to display label annotation in front of all the
  annotations, axes, graph title and data views.
Update integration test

- Update integration test for label_view.
Add support for labels in "pick a point" sequence

- Add support for labels in "pick a point" sequence.
Fix edited text dissappearance bug on drag

- Fix edited text dissappearance bug on drag.
Update test scripts

- Update test scripts.
Avoid label shift when no 'pick-a-point' sequence

- Avoid label shift when no 'pick-a-point' sequence.
Update test script

- Update test script.
Close label's textarea

- Close label's textarea on loss of focus.
Disallow user to edit label

- Disallow user to edit label in 'giveUp' and 'correct' steps of
  'pick a point' sequence.
Fix for IE9

- Handle textarea's loss of focus for IE9.
Tweak 'checkDescendent' function

- Tweak 'checkDescendent' function.
Add destroy function to remove all bindings

- Add destroy function to remove all bindings on removal of the label
  or on step change.
Rename 'topAnnotationHolder'

- Rename 'topAnnotationHolder' as 'topAnnotationsHolder' in
  views/graph.js and update test script.
Move 'getNearestPoint' function

- Move 'getNearestPoint' function to lib/data_representation.js.
Refactor code

- Refactor code to avoid use of 'labelTextView' in views/graph.js and
  tools/label_state.js.
Add 'allowCoordinatesChange' in label tool

- Add 'allowCoordinatesChange' in label tool to support label shift.
Avoid floating point round error

- Avoid floating point round error.