Don't HTML escape entities identified by twitter-text-js, such as links
Merge pull request #48 from byronhulcher/html-escaped-links

Don't HTML escape entities identified by twitter-text-js, such as links
Dual encode for H264 and WebM, emit to respective socket io rooms

Both media formats are encoded and stored in the Publico instance.
At the time chats are pulled from Publico and emitted to the client
they exctract the media format and broadcast only that format to
a socket.io "room" by the same name as the format.

Clients now emit an event, "join", with the format they wish to
receive. The initial chat dump occurs on this join event instead
of connection. Room names at this time are "webm" and "mp4".
Merge pull request #51 from imakewebthings/mp4

Dual encode for H264 and WebM, emit to respective socket io rooms
Restrict visibility change play/pauses to in-view videos
Merge pull request #54 from imakewebthings/vischangefix

Restrict visibility change play/pauses to in-view videos
Implement video -> GIF conversion.

I will likely split vid2gif out into a library soon-ish so this can be
used on other meatspac-related sites, but this will do for now.
Merge pull request #53 from meatspaces/gifsave

Implement video -> GIF conversion.
Refresh waypoints on chat removal, address issue #52
Merge pull request #57 from imakewebthings/wpfreezefix

Refresh waypoints on chat removal
Rename convert2webm to convert2video.
Simplify image validation.
Remove unnecessary recent chat array reversal.
Clean up a bunch of weirdness in convert2video.

- Check filesize before doing the work to convert to a buffer (yes, I'm
  aware this changes the checked filesize by about 10 bytes, but I'm
  pretty sure we don't care).
- Ensure that file cleanup is always done and won't be accidentally
  forgotten in a future commit.
- Don't create error/finish listeners in a loop, since they're always
  the same anyway.
Clean up handling of fingerprints.

This makes the handling more similar to meatspace v1, which is:
- Clients don't calculate a user ID or care about their IP.
- The server calculates a user ID with a fingerprint+IP hash. When a
  message is posted from a client, the server calls the client back to
  tell them what their user ID was.
- Clients track some amount of their previous user ID's and use this for
  e.g. hiding the mute button on their own messages.

Somewhat unrelatedly, this change also adds a size limit check before
doing a JSON.parse on socket messages, cause like, parsing arbitrarily
sized JSON is real bad. Especially since we'd just throw the data on the
ground 2 calls down the chain.
Trigger save button once conversion is done

Fix spacing

Remove special styling for saved
Merge pull request #58 from marcusramberg/save_at_once

Make convert button save at once.
Add missing semicolons
Merge pull request #59 from marcusramberg/tidy

Add missing semicolons.
Add jshintrc's for node and browser code (taken from original meatspac).