Allow each partials dir to be configured

Since each partials dir can be [specified as an object](https://github.com/ericf/express-handlebars/pull/70), each dir can be configured differently. This is useful for example to always cache distributed partials, that don't need to be reloaded at each request in development:

```javascript
var hbs_config = {
  extname: '.hbs',
  partialsDir: [
    '/.../views',
    {dir: '/.../node_modules/third-party/views', namespace: 'third-party', cache: true}
  ],
  handlebars: Handlebars
};
var handlebars = express_handlebars.create( hbs_config );
```
There's some potential issues here. In the flow of `render()` --> `getPartials()` --> `getTemplates()`, `render()` will force `{precompiled: false}`, since the dir's options are mixed-in last, that can be overridden at the dir level, which inverts the control.

I'd rather flip this around to:

```js
dirOptions = utils.extend({}, dir, options);
```

This way the passed-in `options` are still in control. This way if the dir is configured to _not_ cache, but the caller to `render()` can still force that render call to use caching. In order to mix the options in this priority, we'll need to change code in the public APIs that processes the options (and probably abstract it out since it will be duplicated) to not include props with `undefined` values in the processed options object.