Add uielement extension with watcher capability

This allows watching for accessibility events on any UI element, in
theory, though currently only applications and windows are exposed.

The uielement extension is currently bare other than the watcher, but
can hold more general UI element functionality shared by both
applications and windows in the future.
Add uielement:role() and checker util methods
Allow checking if an event was triggered on a child

Including destroyed events.
Automatically stop watchers whose element is destroyed
Revert "Automatically stop watchers whose element is destroyed"

This reverts commit fd172ef6641887618f05cb7e34a87cd345a4ee61.

There are problems with this commit and a different approach is
necessary.
Save window pid and id on creation

Rather than cache the id and find the pid again every time. This is
important for processing events on windows which were deleted, since
this information is no longer available for them.
Track watchers and automatically stop them in lua

Automatically stop watchers whose element is destroyed, take 2. This
works with applications, too, and doesn't have any weird behavior.
Merge pull request #162 from tmandry/uielement

Add uielement extension with watcher capability for applications and windows