directive = (f) => ((...args) => {
    const d = f(...args);
    directives.set(d, true);
    return d;
})
Brands a function as a directive so that lit-html will call the function
during template rendering, rather than passing as a value.

@param f The directive factory function. Must be a function that returns a
function of the signature `(part: Part) => void`. The returned function will
be called with the part object

@example

```
import {directive, html} from 'lit-html';

const immutable = directive((v) => (part) => {
  if (part.value !== v) {
    part.setValue(v)
  }
});
```