Initial implementation of a Gmail source.

This new source downloads emails from Gmail accounts and takes advantage of the
Gmail IMAP extensions to provide unique ascending ids and labels for sup.

This is an initial implementation and has a lot of issues.
Split the imap sync code in smaller pieces.
Remove unused functions.
Use Oj for Json serialization.

LevelDB only supports strings as keys/data so we need to serialize/deserialize
the data we input into a string format. I use Oj is a fast Json
serialize/deserialize library that works perfect for the task.
Revert Oj to Yaml.

No need to add more dependencies to SUP. Let us better use the tools we already
have (YAML) instead of adding more (Oj).
Fix bug in leveldb_put method
Add leveldb-ruby dependency.
Fix crash when searching with non ASCII characters.
Implement labels sync for old messages.
Add sup-add gmail option (thanks matthieu.rakotojaona@gmail.com)
Add fixes and refactoring (thanks matthieu.rakotojaona@gmail.com)
Add the snappy gem as dependency.

Seems that leveldb requires the snappy gem to handle databases larger than 4MB
in size. But leveldb does not include this gem in it's own dependency list so
we need to add it to sup.

See: https://github.com/wmorgan/leveldb-ruby/issues/23
Support sync of multiple mailboxes, not only All mailbox
Propagate updated labels to add_unhide thead-index-mode
check if path is supplied
un-private some source methods
add sync_existing configuration option for disabling local<->remote label sync

Conflicts:
	lib/sup/gmail.rb
only store message (label sync) when there has been a change
remove safely wrap, why was it there?
Merge pull request #3 from gauteh/various-gmail-stuff

Various gmail stuff