roster versioning patch

the current solution offers following features:
- check for roster versioning automatically (server advertises)
and use it, if available
- can set a custom rosterpersitence implementation through SmackConfiguration.setRosterPerstistence
- if no custom implementation is set, use a default implementation that serializes into files
- the default implementation checks, if it is running on android:
yes -> write to externalstoragedirectory
no -> write to user home dir

no unit tests so far. would basically require to implement a simple server in python or something
that supports the whole stream negotation up to feature advertising (where roster versioning is advertised, too).
and sending roster pushes. lot's of work. would rather test with a server that supports roster versioning.
openfire does not...