Initial commit

This is a rough prototype.

It can:
* Start a server
* Accept a connection
* Start XMPP stream
* Initiate TLS
* Sort of authenticate a client. TBD: actually do it against a storage.
* Bind a stream
A bit of documentation
New stanza lookup mechanics

Don't rely on inheritance. It doesn't work with deeper inheritance.
Extracted IQ stanza
Parse bare JIDs
Storage stub
Authenticate users against storage
Roster get

This is a stub of a roster get iq request
Server configuration

* It looks for config (dune.rb) in current working directory
* You can specify client stream configuration:
  * Host
  * Port
  * CA bundle
  * Certificate
  * Cert private key
Fixed typo
Auth fail with exception instances, not classes
Real Contact implementation

This one reflects spec better
Storage configuration

Dune::Storage class is a dummy storage class. It's meant to be a storage API
documentation. Users can implement custom storages by subclassing it.
A sample Sequel storage driver

This driver uses Sequel as a db interface.
Announce listening after we've successfully started a TCP server
Example Dune config
Contact JID can not be a key

It can be a JID on the different server and we won't have record for it in our
db.
Subscription

It basically adds a new contact to users roster.
Bring roster generation in line with subscription
Change output colours to more sane ones

* Blue for incoming stanzas
* Green for outgoing stanzas