User roles

Add basic Roles support, with the following:

New `Role` enum model, which contains four user roles:
- Test: temporary user, used for support, read-only access
- Guest: unprivileged user, read-only access
- User: standard user, read/write access, basic settings
- Admin: privileged user, read/write access, full settings

Permissions can be checked via new method in `User` model.  For example:

```csharp
if (user.HasPermission(Role.Admin))
{
    logger.IfInfo("Admin user!");
}
```