Indentation fixup trough whole file.

And whitespace cleaup while we are at it.
Seperate behaviuor from addition module interface.
Plain definition of backend module.

For now, we will base changes on static dependency on new backend module.
Moved inicializaion of backend to new module.

While we do not use `Options` in `init/1` function, it is possible, that
those will be needed in close future; hence such interface.
Type definitions copied from ejabber.
Plain move function call to backend module.
Removed type wrapping (by backend call) form function call.
Changed patter-match order in case statment.

To make shure `NewVersion` will match.
Changed return type, to allow explicit pattern match on failing version.
Moved writing roster version to backend module.
REFACTORING removed need to call function with magic-accumulator
paratemer.

Cleans up function call, and make algorithm easier to understand, since
we can easily see how `Acc` is initialized.
REFACTORING simplified functin logic, and their responsibility.

`get_user_roster/2` seens quite useless, but since it is exported, I
don't won't to removed it.  I would like to keep changes in interface
seperate from backend introduction itself.
Plain move function to backend module.
REFACTORING removed unnecessary delegation.
Typo.
Document hook handlers.
Update `get_version` return value and usage.
REFACTORING extract function

This one is done merly to increase readability (my understanding) of
program.  But it shows nicely where and how data format in backedn leaks
into out logic.
Moved function to backend module.

And again introduced wrapped return value, which have to be pattern
match, which itself will fail as soon as possible.
Typo in function call