Added patch-op object and bug fixes

- There is now a single patch op factory function with internal
  logic for switching on patch values

- Dom indexing is fixed, with correct branch skipping and binary
  search functions

- HTML Tag name tests removed to prevent verbosity, tests passing

- Preliminary addition of widget functionality, untested

- Arranged files for easy split between generic and DOM specific
  code into modules
allow empty text nodes