Handle integer options as integers

This change fixes the Config plumbing to treat integer options as integers.

Testing done:

Ran VDD using both integer options (attachtimeout and restartcount).
Rename Elements.xml to Events.xml

This change, the first in a series, begins rearchitecting the way VDD Events
are handled internally.  In this change, the file Elements.xml is renamed to
Events.xml.  In VDD terminology, "elements" are HTML elements found on an
HTML page; "events" are the smallest unit of VDD test execution and may
correspond to an element, but may instead correspond to an action taken by
VDD (e.g. "tr" is an event that refers to a "tr" element, but "csv" is only
an event).

A very small amount of cleanup was also done within Types.java.

Testing done:

Ran VDD to make sure Events.xml is correctly loaded.
Document EventLoop.firePlugin
Split javascript plugin firing out into its own method

This change creates EventLoop.fireJSPlugin to contain all the code that fires
a javascript plugin.  In addition to just splitting the code out, it has been
made significantly more robust.  The "fire only first found" plugin
functionality has been left as-is for now.  It will be fixed after the next
change, which will split java plugin firing out.

Testing done:

Ran VDD against a test page using a js plugin.  Sometimes the plugin worked
as expected (returned an integer).  Other times, errors were injected (such
as returning strings, invalid code, etc.).
Split java plugin firing out into its own method

This change creates EventLoop.fireJavaPlugin to contain all the code that fires
a java plugin.  The code also was made more robust and made to more accurately
report exceptions received during plugin instantiation and execution.

Testing done:

Ran VDD with sugarwait plugin to make sure things work normally.  Ran with an
old copy of sugarwait to make sure that instantiation errors are handled
correctly.
Move SodaPluginParser and rename it

SodaPluginParser is really part of VooDooDriver and it really should be in
in the VooDooDriver package.  This change moves it there and renames it to
PluginLoader.  A follow on change will update the class name everywhere.

Testing done:

trivial
Finish renaming SodaPluginParser to PluginLoader

Piggyback a few cleanups along, too.

Testing done:

Built VDD.
Create a new VDD plugin infrastructure

This change adds several new classes to VDD that are related to plugin
execution.  The Plugin interface is implemented by all plugin types and
provides a uniform interface to VDD.  Common functionality is implemented in
PluginSuper.  JsPlugin represents a javascript plugin.  JavaPlugin represents
a Java plugin (the most commonly used type).

The intention here is the simplification of plugin instantiation and execution.
However, no changes to VDD's operation have been made yet; those will come
in follow-on changes.

Testing done:

Built VDD.
Plumb new plugin infrastructure into VooDooDriver

This change incorporates the new plugin infrastructure into VDD.  Functionality
currently has not changed, but this change enables new features to easily be
added to plugins.

Upcoming changes that depend on this are allowing multiple command line
specified plugins, and allowing access to VDD state from within plugins.  Also
plugin wildcards will soon be implemented that allow plugins to always execute,
allowing for profiling by plugin.

Testing done:

Ran VDD regression script which includes plugin testing.  Ran several
SodaIceBox suites, making sure that SugarWait continues to work as expected.
Rename PluginEventType to PluginEvent

It's an enum and is already treated as a type, so no need for the extra
verbiage.
Finish renaming PluginEventType to PluginEvent

Testing done:

Ran VDD against several soda suites.
Reorder constants in Elements.java

This change reorders the enumeration constants in Elements.java so that they
are in the same order as the corresponding events in Events.xml.  There are
several constants that don't appear in Events.xml, and I assume they're
historical cruft, however, lacking firm data, I'll investigate and delete them
later.

Testing done:

Built VDD, ran a Soda suite.
Add methods for firing plugins without element/plugin event specs

This change adds two firePlugin methods:

   boolean firePlugin(WebElement element);
   boolean firePlugin(WebElement element, PluginEvent event);

They are intended for use when plugin firing is not dependent on the current
HTML element (or there is no current HTML element); or for when there is
neither a current HTML element, nor is there a need to filter by plugin
event type.  Both routines, as with the original three-argument firePlugin
fire all plugins matching the provided specifications and return true if
all plugins executed successfully.

Testing done:

Ran VDD against a Soda suite.  These routines aren't yet used, so their
testing was limited to compilation.
Add auto-screenshot functionality to VDD

This change adds functionality to VDD to automatically take screenshots when
certain events occur.  The events, which can be specified either on the
command line with the --screenshot argument or within the VDD config file
with a <cmdopt name="screenshot">, are warning, error, assertfail, exception,
watchdog, and all.  Screenshots are dumped into a test-specific "screenshots"
directory.

Since much of this functionality parallels --savehtml, the HTML page saving
functionality was slightly rewritten so that common code could be factored
out.

Testing done:

Ran VDD against its regression test and against some Soda suites using various
combinations of --savehtml and --screenshot events.  Verified that saved HTML
pages and screenshots are where and as expected.
Remove PluginsHash

With all the recent plugin shuffling, this class is no longer needed and can
safely be deleted.

Testing done:

VDD regression suite.
Convert Plugin from interface to abstract class

No need for both an interface and a superclass when we can have it all in one
abstract class.

Testing done:

VDD regression suite.  A random Soda suite.
Get rid of javadoc warnings

This change finally fixes the last of the javadoc warnings.  Some minor javadoc
comment cleanup was also done, but it barely scratched the surface.

Testing done:

Compiled and checked for warnings.
Clean up and document Browser and its subclasses.

This change cleans up the Browser class and its three subclasses and adds
documentation to all methods and fields.  In addition, the BrowserInterface
interface is removed since the abstract class Browser performs all the needed
functions that would be provided by having an interface.

Testing done:

Compiled VDD, checked the documentation, ran the VDD regression suite, and ran
a couple of Soda suites.
Rename Types.java to EventLoader.java (Part 1/2)

The class Types loads and processes the file Events.xml.  This change alters
its name to reflect its function.
Rename Types.java to EventLoader.java (Part 2/2)

The class Types loads and processes the file Events.xml.  This change alters
its name to reflect its function.

Testing done:

Compiled VDD and ran against a Soda suite.