Fixed the hydrology datasets for those ugly spikes...

There appears to be a bug in the NIWA database when you select a series
table. This bug introduces a range of data spikes which shouldn't exist
and completely ruins any data analysis which could be done.
However, if you run it as a Series Chart this problem appears to be removed,
One problem with this is that it then stores the date in an ugly format.

I've modified the functions to accept "niwa_date" as an argument.
This will then use the custom date formatting in order to switch it to
a python date time object
Added a utilities function which will be used to store general purpose utility
functions for later spinning out.

Introduced a monthly aggregation function which will take a generic aggregation
function and return it applied monthly to a dataset
Added additional key word functionality to the aggregation functions
Generalised a time series aggregation function.

This function takes two additional functions as arguments
1. A time series aggregation function
2. The statistical aggregation function

It returns the statistical aggregation function applied to the time series
aggregation function
Added a Relative Hydrology statement

This function takes aggregation functions and returns the DataFrame
with a new column taken as relative to the aggregated column.
i.e. Will perform a groupby operation and subtract this from the initial
column for each entry
Minor modification to gitignore
Included a cumulative distribution function for assessing the probability
of constraints occurring for differing parameters.

May be used to assess the distribution of constraints against parameters
Added masks for series.

Need to add functionality to automatically pick the
desired function to apply given a string to make the function more portable
Added functionality for a general purpose sort mechanism based on a string for masks

Broadly, takes a string and chooses what method to apply based upon that.
Uses a dictionary to look up values in order to determine which method to use.
Full functionality is not supported yet
Added cumulative conditional probability calculations to the constraint calculations
Minor mask bug fixes
Minor Constraint bug fix and docstrings
Added a function to load demand data into the scripts:

Will likely merge a range of data import sets as they are very similar in the
near future. Will also need to undertake a series of refactoring in order to make the
module easier to traverse.
Change to raise the max by the step size to get one extra iteration