Better file event and active view handling, changed name to Refresher
Separate modules, renames, command and websocket tests
Socket/thread-based websocket server and connections (working, not final)

- should be built onto SocketServer.BaseServer, or at least follow the same
  architecture (hopefully will change it later, add more exceptions, etc)
- spent too much time messing with threads and the websocket protocol,
  not really my area of expertise (it's interesting though, but there are
  at least a few cases/holes I didn't cover)
Server starts with plugin, renamed project, updated readme, added server.log

- wanted a new name again; maybe it's worth noting that googling for taken
  names I found livereload, which is quite similar, AND also has a sublime
  plugin (should have looked earlier); so decided against LiveUpdate,
  Webloader seem a good compromise
Start plugin and server properly, several changes

- plugin.Webloader is the main controller (webloader in plugin scope),
  it loads settings, looks for the server in sublime.websocket_server,
  and (re)starts a server if none or stopped
- plugin.*Commands can reach the settings and server via the webloader
  global, and send commands to the server via webloader.command()
- server command: ctrl-shift-c runs a direct server command
- run js command: ctrl-shift-j can run js in a client
- websocket.Server now listens in 5sec timeouts, to detect if stopped
- websocket clients are now extended via server.Client
- logging is still pretty basic; Webloader.log is used by the server
  and clients, depending on console_log/log_file options in settings

Further notes:
- settings.client_watchlist is still not supported, as it could (and
  probably will) be simplified significantly by depending on the
  client host's url combined with filepaths
- also, not sure how, but I missed that there IS a select module in
  Sublime, so websocket classes should just extend SocketServer
More stable threads and server, reconnecting client

- fixed several thread-related errors in plugin/server/client code,
  like hanging clients, shutting down server while initializing, etc
- more stable code for the plugin to check/restart the server
- added server commands: start/stop/restart (ctrl-shift-c)
- logging is still bad, far from threadsafe, have to add a log class
- js client now tries reconnects in an incremental manner
Updated readme, demo dir, fixes for file:/// mode
BaseHTTPServer, JSON messages, client page urls

- messages are json based (common tags: cmd, file, content)
- BaseHTTPServer instead of StreamRequestHandler (websocket handshake)
- timeout if no messages after handshaking (clients send on connect)
- store client page urls sent via ?client=pageurl param
Updated event code, new filematching pattern

- update WebloaderEvents code to former changes
- filematching pattern in server.Client to figure out if saving a
  non-resource file (like .html) should refresh the current page
- Message class for server messages, change client to json messages
- refresh readme, change license
- files have several only-whitespace changes (remove endings was off)
New filepath matching, settings help, event fixes

- fixes in filepath -> url matching; now tries to matches page urls
  with non-resource files (like html or php)
- new help in settings; new but unsupport 'client' setting; also,
  the client_watchlist (now 'sites') setting still not supported
- basic info and help to index.html
- read/write locks in websocket.Client (even though reading blocks,
  but that can change later, and message order matters)
- plugin reload restarts the server, if server address changed
- sublime event-related fixes, keep window state up-to-date
Less saved as css, better callbacks, file mode

- new save_parsed_less setting, fix the js command, clients save a css file
- server/client events and callbacks moved from websocket to server module
- clients won't modify the current message object
- fixed file path matching, works with file:// protocol, decodes urls
Update readme and demo files
Run js command, clients setting, on_connection

- run js command: log results to the javascript and sublime consoles;
  if multiple clients, select the one watching the current file;
  if more, let the user choose via quick_panel (and store that one);
  hitting the ctrl-shift-j hotkey twice allows selecting another one
- clients setting: if set, limit client access to the listed ips
- on_connection callback: if returns true, a new connection is denied
- on_modified callback: skip non-file views
Sites setting, changed path matching accordingly

- sites setting: custom path -> url matching; see comments in settings
- patterns dict now looks like this:
  /path/to/replace/with/ : /this/path/part/(rest/x.html)
  matching returns /path/to/replace/with/ + rest/x.html
Reinit on setting changes, better sites matching

- settings: necessary reloads/reinits on important setting changes
- sites: partial matches, multiple patterns possible for the same url,
  proper matching for user patterns, file protocol fixes, refactoring
- webloader.js inits on domloaded/timeout, script can be put anywhere
- remove temporary styles when reloading css files
- update readme (instructions) and settings comments
Less update fixes for css url() paths

- less reload fix (don't abort if no related less/less-reload element)
- less/css urls: less parser now gets a rootpath, which is the relative
  path difference between the less element, and the page baseURI
  eg. /x/index.html + /y/a.less + url(b/c.jpg) -> url(../y/b/c.jpg)