Improvements to debug status window.

* Define a command :JavaDebugGoToFile to go to a file when breakpoint is
  hit instead of using --remote-tab. We want to do some more actions such
  as create a sign to highlight the line. Changes are done to VimClient,
  signs.vim, debug.vim.

* util.vim: Function to go to a buffer window even if its in a different
  tab. Function to delete a buffer and its window. Used to auto remove
  the debug status window when debugging session is stopped.
Bug fix in breakpoint toggle command.

* Display breakpoint sign based on return value from command instead of
  blindly toggling.

* Fixed variable name change from line_num to line from earlier rebase.
Display breakpoint added/removed message in VIM.
Separate commands to stop, suspend, resume debug session.

* :JavaDebugStop
* :JavaDebugThreadSuspend
* :JavaDebugThreadResume
* Updated doc
Removed commands that are not needed anymore.
Set switchbuf to use tabs while switching buffer.
Suspend/resume specific thread.

* Go to thread window and run :JavaDebugThreadSuspend or
  :JavaDebugThreadResume to suspend or resume thread under cursor.
  If there is no thread found under cursor, then the entire debug
  session is suspended or resumed.

* UI improvements and bug fixes to thread window. Support running debug
  commands from the status window by defining them in those windows.

* Got rid off plugin/debug.vim as the commands are now defined inside
  the status window itself.
Code refactor.

* Created separate packages for context and event.
* Created separate event handlers instead of cramming everything inside
  DebugEventSetListener. It simply delegates to appropriate event
  handlers - ThreadEventHandler and DebugTargetEventHandler.
Support debugging multiple threads.

* JavaDebugStep command can read the thread id under cursor if its
  present and invoke stepping on that thread. When thread id is not
  available, then the stepping thread tracked by ThreadContext is used.

* ThreadContext has an API to return the stepping thread.

TODO:
* debug.vim still does not track per thread information for
  debug_step_prev_file and debug_step_prev_line. This is not a big deal
  because it just removes the highlighting from threads that are not
  currently being stepped through.
* All methods in ThreadContext, VariableContext are marked as
  synchronized. Need to find a way to avoid this.
Code refactor.

* Created separate package for UI related models - ThreadView and
  VariableView. This keeps the VIM UI specific logic out of the actual
  context logic.
Eclipse style display texts for Variables view.

Borrowed code from JDIModelPresentation.java to make the variable
display texts similar to how Eclipse shows it.

Note: Needs some cleanup and will end up getting rid off some
presentation logic as we don't need that level of sophistication. It
only makes the code hard to read and also increases the rendering time.
UI enhancements to debug status view.

* Nicer folding: Took the node expanded/collapsed symbol from NERDTree.
  Changed fold text to follow similar style as NERDTree. It still uses
  VIM folding though.
Bug fix to handle stepping into a class file.

* When stepping into a constructor during object creation, the class
  file can get loaded. Since there is no source code, we cannot jump to
  a file. Neither can we show any variables. But we should update the
  stacktrace.

* Update the stacktraces whenever a thread is resumed; not just when it
  was a user request. This is because when a thread is sleeping
  (Thread.sleep), when we suspend it and then step over, it gets
  resumed. Here the resume is not caused by user request, but because of
  a step over.
Change behavior of GoToFile to not use tabs.

Looks like using tabs is not a good idea as the switchbuf=usetab,newtab
does not honor the newtab when the buffer exists, but is not associated
with any window/tab. So reverting to simply loading the buffer from
current window.

May revisit this decision later ...
New breakpoint commands.

* Created separate commands to get and remove breakpoints.
* These commands take an optional file parameter (% is interpreted as
  current file in which the cursor is located) to restrict the command
  to that specific file.
Improvements to breakpoint commands.

* Created separate commands to add, remove breakpoints instead of using
  the toggle command. The toogle command has been disabled since it
  should really be used to enable/disable breakpoints; not create them.
  This will be enabled later.

* To follow the same convention, separated the suspend and resume
  commands to have a suspend all, resume all command.

* Updated doc to reflect new commands.

* Bug fix to update the debug status threads when the debugging session
  is disconnected because the remote VM terminated.
Fix variable nesting to 2.

There can be infinite nesting if 2 objects refer to each other.
Similarly, too many nesting can cause problems. So for now, limiting
nesting to just 2 levels. Later, we will add a command to expand a
variable.
Performance improvement in generating the status window.

* The status window is refreshed every time a new thread is created.
  Every time a thread is created, the stacktrace of all threads are
  being recomputed (concatenated into string). In a large setup like
  Hadoop where there are about 200 threads, this takes a long time,
  especially when your debugging VM is remote. As a workaround, the
  status window is refreshed only after the debug target created event
  is received. This happens after all the existing threads have been
  notified. We still need to support sending incremental status updates.
  That is the long term solution.

* To achieve this, the initial state is set to CONNECTING. In this
  state, any thread creation event won't cause status to be refreshed.