Add uielement extension with watcher capability for applications and windows

This allows watching for accessibility events on any UI element, in theory, though currently only applications and windows are exposed. It works by having window and application "subclass" uielement, which implements the `addWatcher` method.

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.

Closes #58 

I see the watcher as being a fairly "low-level" API that can be built on later for more convenience in doing simple tasks. However, I firmly believe that such functionality should be exposed to Lua, so people can do more complex things efficiently and listen for custom events or events that we don't explicitly handle yet.

I will be using this API as I build my own WM extension (which will be fairly complex), and extract abstractions into builtin extensions as they make sense.

Sample code to keep track of all move, resize, and close events for windows currently on the screen:
```lua
local events = hs.uielement.watcher

function handleWindowEvent(win, event, watcher)
  if event == events.elementDestroyed then
    watcher:stop()
    hs.alert.show('window closed')
  else
    hs.alert.show('window event '..event..' on '..win:id())
  end
end

for i, win in pairs(hs.window.allWindows()) do
  if win:isStandard() then
    local watcher = win:newWatcher(handleWindowEvent)
    watcher:start({events.elementDestroyed, events.windowResized, events.windowMoved})
  end
end
```

[Here's another sample](https://gist.github.com/tmandry/a5b1ab6d6ea012c1e8c5) for how to actually track new windows as they appear. There's a fair amount of bookkeeping involved to avoid resource leakage and if this is a common use case, I can make an extension for it.

I've tested the code quite a bit and I believe it to be stable. That said, please look over this carefully, as I am new to Objective C!