FIX include earlier omitted gropus.

Again this is based on oryginal code.  What's interesting, we already
once seen code reading roster from database, and it did not read groups;
which is clear bug (since as it turn out, it used them).
Use of backend module.
Use of backend module.

We add some overhead by this commit.  In new version whole `NewItem`
will be written to database, while in old only one table (from three)
was updated.
Removed not longer neede variables.
User backend module.
Notes; idea for introducing back odbc optimalization.
Use backend module.
Change to gen_backend API.

Such usage of backend in mnesia is closer to what odbc module is doing.
While we change interface, this commit does not change functionality in
any way.
Update and implement bahaviour; `remove_user` implementation.
Use backend module.
Use backend module; and possible bug fix.

odbc_query returned query as list, but it did not run it at all.

And syntax of creatign `ItemVals` and `ItemGroups` from two different
roster versions it hideous.
Use backend module.

We remove a lot of code :)
INDENTATION

seperate commit to see move clearly what code we left unchanged in
previous change batch.
Use backend module.
FIX possible infinite loop.

Missed while refactoring.
REFACTORING extracted function.
Introduce recursion, and point out exit points.
Remove usused functions.

All of those where moved to `mod_roster_odbc_back` module.
Unify and update `transaction` in backend module.

While mnesia backend does not need `LServer` to execute transaction, it
is neccesary for odbc backend (each `LServer` have it's own pool of
sql-connection servers).  Due to this we have to "generalize on specail
case"; no way around it.
Removed hooks and logic related to web-administration.

We don't use this functionality anymore.