Class names and data-attributes as configurable options

Hello!

First of all, thanks for the awesome project!

This PR tries to ease the pain of styling and customizing the module with your own set of CSS classes and `data-attributes`. Some clients might be just be too *piky*.

The second commit is there to solve a "WTF" moment that came after testing the latter when you tried to pass an options object with incomplete `i18n`, `attributes` or `classNames` properties.
It changes the `extend` function to a deep merge and enables you to do something like this, without breaking the component's behavior:
```javascript
new Pikaday({
	i18n: {
        // Missing the rest of the i18n keys
        weekdaysShort : ['Su','Mo','Tu','We','Th','Fr','Sa']
	},
  	field: document.getElementById('datepicker')
  });
```