Added hooks and made some ace functions available to editorInfo Object 

Hello, I have finally finished re-doing your suggestion from my previous pull request.

I'm still doing one strange thing with the return object of a hook. I have raised the question here(https://github.com/Pita/etherpad-lite/issues/986)

I have updated the ep_datatables repository following this update.

Here is my attempt at documenting the new hooks
*****************************************************************************
 aceStartLineAndCharForPoint/aceEndLineAndCharForPoint Called from: src/static/js/ace2_inner.js

 Context - 
 callstack - a bunch of information about the current action
 editorInfo - information about the user who is making the change
 rep - information about where the change is being made
 root - the span element of the current line
 point - the starting/ending element where the cursor highlights
 documentAttributeManager - information about attributes in the document 
 This hook is provided to allow a plugin to turn DOM node selection into [line,char] selection.
 The return value should be an array of [line,char]
*****************************************************************************

 aceKeyEvent Called from: src/static/js/ace2_inner.js

 Context - 
 callstack - a bunch of information about the current action
 editorInfo - information about the user who is making the change
 rep - information about where the change is being made
 documentAttributeManager - information about attributes in the document 
 evt - the fired event
 
 This hook is provided to allow a plugin to handle key events.
 The return value should be true if you have handled the event.
*****************************************************************************
       
 collectContentLineText Called from: src/static/js/contentcollector.js

 Context - 
 cc - the contentcollector object
 state - the current state of the change being made
 tname - the tag name of this node currently being processed
 text  - the text for that line 
 This hook allows you to validate/manipulate the text before it's sent to the server side.
 The return value should be the validated/manipulated text.
*****************************************************************************
 collectContentLineBreak Called from: src/static/js/contentcollector.js

 Context - 
 cc - the contentcollector object
 state - the current state of the change being made
 tname - the tag name of this node currently being processed
 
 This hook is provided to allow whether the br tag should induce a new magic domline or not.
 The return value should be either true(break the line) or false.
*****************************************************************************
disableAuthorColorsForThisLine Called from: src/static/js/linestylefilter.js

 Context - 
 linestylefilter - the JavaScript object that's currently processing the ace attributes
 text - the line text
 class - line class
  
 This hook is provided to allow whether a given line should be deliniated with multiple authors.
 Multiple authors in one line cause the creation of magic span lines. This might not be suit you and
 now you can disable it and handle your own deliniation.
 The return value should be either true(disable ) or false.
*****************************************************************************