Add a enum compression strategy

This gives users a default compression strategy. It works by setting a bit string for the enum values and converts it into an integer.

Example:

If we had the following as our scopes enum:


```js
['users', 'products', 'sales', 'clients', 'emails'];
```
and made a scopes request like the following:

```js
['products', 'clients'];
```

we would end up with:

```js
42 or 101010b
```

where we prefix the value with `1` so we don't lose any digits.

1 | 0 | 1 | 0 | 1 | 0
--- | --- | --- | --- | --- | ---
_prefix_ | users | products | sales | clients | emails