Create VDD Event base class.

This is the initial commit in the restructuring of VDD's handling of Events.

The current architecture looks something like:

  VooDooDriver.RunTests:
    foreach test
      test.runTest()

  VooDooDriver.RunSuites:
    foreach suite
      foreach test
        test.runTest()

  Test:
    loadTestFile:
      Events = TestLoader.getEvents()
    runTest:
      events = loadTestFile()
      EventLoop(events)

  TestLoader:
    getEvents:
      types = EventLoader()   // Load Event.xml
      return parseTestFile()  // Load test script

  EventLoop:
    run:
      foreach event
        handleSingleEvent()
    handleSingleEvent:
      // massive switch statement over event types

The direction VDD is now moving will look more like:

  Test:
    loadTestFile:
      events = TestLoader()
    runTest:
      EventLoop(events)

  EventLoop:
    run:
      foreach event:
        foreach event attribute:
          event.doAttribute()

  TestLoader:
    foreach node in test script
      translate node to Event
      add to list of Events

This new architecture will provide a greater level of abstraction, should be
easier to read, will avoid most code duplication, and, most of all, will be
easy to modify and maintain.
Merge branch 'dev' into dev_v2
Create UnknownEventException

This change creates the exception that is thrown when an unknown event appears
in a test script.
Move Events.xml and EventLoader.java to Event

EventLoader will only be called in one place henceforth: from the static
initialization block in the Event class.  That makes it part of the
org.sugarcrm.voodoodriver.Event package.  And Events.xml follows EventLoader
wherever it goes.
Load Events.xml in Event's static block

This change adds code to load Events.xml in the static block in Event.  The
type created from Events.xml is now ArrayList<VDDHash> instead of the wrapper
around that type, ElementsList.  That class will be removed in a future change.
With the loading done in a static block, this file will be loaded only once
during an entire VDD run, instead of once per test.
Delete ElementsList

This class is no longer needed.  In its place now is ArrayList<VDDHash>.
Rework Test.java

This change heavily modifies and cleans up Test.java.  Aside from code cleanup,
the aim here is to remove redundant code by continuing to push VDD's config
object down through the classes and.  This also prepares the Test object to
use the new Event framework.
Continue the VDD Event update... More Test mods

This change makes a few modifications to the Test object.  Most notably, the
way EventLoop is instantiated is changed.
Modify TestLoader

This change reworks TestLoader so that it loads each event in the test, but
defers the work of parsing the events to the Event class (and its children).
This greatly simplifies this class and helps centralize the logic of
understanding events.
Rework EventLoader

This change modifies the logic in EventLoader to make it work better with the
way it will be used in Event.  The biggest difference is that events are
stored in a hash rather than array.  This will make lookup (a frequent
operation) much faster.
Add a big, ugly Event Enum to Event.java

This is an interim step on the way to VDD code niceness.  While this sort
of large list is exactly what I'd like to get rid of (it merely duplicates
the same list in Events.xml), navigating the treacherous waters of the class
loader to load Event subclasses based on the classname being specified per
event in Events.xml will take more time now than is worth it, and so that
task is deferred until more code elsewhere is in place.
Rename nodes in Events.xml

This change renames "accessor_attributes" "selectors" and "soda_attributes"
"actions".  The reasoning is that the attributes listed under selectors are
used to select HTML elements from the current page, and the attributes under
actions then do things with those elements.
Create Event constructor

This change gives the Event superclass a constructor.  All subclass will call
it.  Its purpose is to take the event specification in the test file, and
compile it down into an internal list of selector and action attributes that
will then be used to find the appropriate HTML elements (selectors) or to
run voodoo on them (actions).
More fleshing out of Event

This change adds code to track the original event from the test script and
allows for passing VDDExceptions.
Delete Enum in Event.java

It occurred to me that there's no need for the Enum, especially if it's
(relatively) temporary.  This change modifies that code to just use a big
(but not quite so big) if-else-if block.
Fix Events.xml location in build.xml
Fix a javadoc warning
Fix exception handling in a couple of files

Now that VDD is compiling again on this branch, some exception handling needs
to be fixed up in a couple of files.
Begin work on EventLoop.java

This is the real ogre of VDD cleanup.  This small change begins the work.
Fix a NullPointerException

If the assert page is null, a NullPointerException was being thrown.  Fix that.

Testing done:

Ran VDD test suite -- no more NullPointerException.