Refactor to accommodate blank & invalid dates & times

Remove hour & min components in previous commit fecc88db57677869ff23330f3cf5a55d3908c3bb (as they are not currently required)

Adding support to allow string representations of dates/time.

This is to support a non dropdown web form where a user can supply
a date and time in separate input fields, if an error was to occur,
the user input should be represented to the user.

TODO:
* finish tests
* Update version number and documentation.

---

@figwit @bendilley 
Switching to `Time.strptime` will require a slight tweak to the following types of test:

```ruby
          it "returns nil when an invalid date (non existent leap year) is supplied" do
            model.starts_on = "29/02/2014" # no leap year in 2014
            expect(model.starts_at).to be_nil
          end
```

```
Time.strptime "29/2/2014 13:00", "%d/%m/%Y %R"
=> 2014-03-01 13:00:00 +0000
```