make new keyword optional

This is a style of constructor that I use frequently. It eliminates boilerplate for downstream consumers. Basically, rather than writing:

```js
var EngineLight = require('engine-light')

var engineLight = new EngineLight()
app.use(engineLight.getMiddleware())
```

you could instead write something like

```js
var engineLight = require('engine-light')

app.use(engineLight().getMiddleware())
```

which just saves steps. also, it makes code look a little less java-y.