To allow muliple plugins, sorted plugin load and general extensibility
of the web client, the server now supports to load an extra.d folder on
startup.
Sub folders inside extra.d, are loaded in alphabetic order and searched
for head.html and body.html, making it possible to append additional
html code into the <head> and <body> elements for the web client.
Example:
```
extra.d/
└── my-plugin
├── body.html
├── head.html
└── static
├── css
│ └── my-plugin.css
└── js
└── my-plugin.js
```
Example head.html:
```
<link rel="stylesheet" href="<%.S%>/css/my-plugin.css">
```
Example body.html:
```
<script data-plugin="<%.S%>/js/my-plugin.js"></script>
```
This makes it possible to extend the web client with additional
components and/or overwrite existing.
Previously, each user broadcasted the status after a "Room" event was
received. This caused a short time for all other participants where
the buddy list showed "Participant X" instead of the real user name.
The session ids contain a Gorilla SecureCookie which internally encodes
"timestamp|value". As a result, newer session ids compare "greater"
than older ids. This is a problem for conferences where the participants
decide based on comparison of the session id who calls who, so later
participants always have to call all of the existing participants.
With this change, the (random) value is at the start of the session id,
resulting in "random" ordering of participants. Also some tests have
been added to check session en-/decoding.