Integrate Eclipse debugger with VIM.

This is the first cut of changes to enable remote debugging of Java process
from VIM.

Functionalities
----------------
* Launch/resume a debug session using :JavaDebug command
* Add breakpoint using :JavaBreakpoint command

Usage examples
---------------
1. Open a vim session with servername = default
vim --servername default

2. Open a file to debug in this VIM session.

3. Set breakpoints
Jump to the desired line
:JavaBreakpoint

4. Launch debugger
:JavaDebug start localhost:5000
Assumption: The process to debug is started on localhost and is
listening on port 5000.

5. When the breakpoint is hit, VIM will jump to that location and
highlight it. To resume execution,
:JavaDebug resume localhost:5000

TODO
-----
* Define a preview window for showing debug variables, etc.
* Show variables, etc.
* Stop debug session.
* Create the document page
Navigation and variable view.

* Navigate using step over, step into, step return.
* View variables in current stack.
* Register debug event set listener to handle breakpoints, stepping
  operations.
* Fixed checkstyle warnings.
* Added a documentation file debug.rst

TODO
Functionalities
* Viewing variables that are objects.

Bugs
* The temp variable viewing window position changes to top after a vim
  command is sent as part of stepping through.

Testing:
Verified step over, step in, step return, get variables.
Support for showing fields within variables that are objects.

* Nested variables are displayed with indentation.
* :JavaDebugControl stop: disconnects instead of termintating the remote
  VM. This is because we haven't exposed configuration that allows
  remote termination.
Display breakpoints and show signs in VIM.

* Show VIM sign for breakpoints.
* Display existing breakpoints in a location list.
* fold.vim: Utility functions to create nice and compact folds.
Command to view stack frames and bug fix in breakpoint creation.

* :JavaDebugStackFrame command is used to view the stack frames of all
  threads.
* Corrected the type name used to create breakpoint. The fully qualified
  class name should be used to account for package name.

Testing:
Verified breakpoint, stackframe command works by debugging a Hadoop
system.
Merge remote-tracking branch 'rkannan82/debugger' into debugger
add jdt.debug jars to jdt compilation classpath
jdt debug changes: bug fix, coding style, etc.

- fix debug start to not include all or non-java projects (only projects
  related to the current projects)
- coding style changes not caught by checkstyle
- remove unnecessary logging checks
Bug: Fixed neat folding to refer to functions using qualified name.

Testing: Neat folding works for viewing variables.
Removed unwanted characters from indentation while viewing variables.
Test classes to be used for manually testing debug functionality.
Bug fix to exclude projects that don't exist while adding to debug
context.
Code refactor.

* Created context classes for variables and stackframes and changed
  commands to use them.
* Track all active threads in ThreadContext.
Status command to view current threads and variables.

:JavaDebugStatus command will open a temp window in the bottom and
vertically split it. One one side it will show the threads and another
side it will show the variables of the currently suspended thread.

This is just an initial checkin. Needs more display formatting.

Testing:
Verified the command shows threads and variables.
Enhancements to debug status view.

* Display status when :JavaDebugStart command is run. It does not auto
  refresh yet.
* util.vim: Enable creation of temp window with vertical split. There
  are some issues in this code, so its not used by debug.vim in this
  change. So the thread view and variable view are shown as horizontal
  splits. This will be fixed in next CL.

Testing:
Status window shows correctly after starting a debug session.
Test code.

* Simulate multiple threads to test stackframes.
Auto update debug status view.

* When debug events get fired, the status window is updated using
  VimClient.refreshDebugStatus which in turn triggers a VIM command to
  request for the debug status. So the control flow is:
  Java->VIM->Java->VIM.
* DebuggerContextManager: New class to keep track of debugging sessions.
  With this change, DebuggerContext is created and destroyed for each
  session instead of getting reinitialized. It makes the code cleaner
  and gets rid off race conditions due to re-initialization.
* debug.vim: Moved the :JavaDebugStatus outside of ftplugin into plugin
  dir. This is necessary because this command is invoked from an
  external VIM command. If at this time, the cursor is not in a Java
  file, then the command won't be available if it were defined in a
  ftplugin dir.

Testing:
Verified the debug commands, status command.
coding style updates for new java debug code
fix message key in DebugStartCommand
rename java debug breakpoint toggle command

- rename the command to toggle breakpoints to make it easier for users
  to scan wildmenu completion for the command.
- rename the java class as well, grouping breakpoint commands together
  (again, easier to scan the list and locate the file)