Convolution separated into Filter class

Address #80

The convolution is separated into a Filter class that can resize the
kernel and translate the kernel between real and Fourier space.
Create common Filter class for convolutions

Address #80

The Filter class deals with both convolutions with and resizing of
convolution kernel.

A new class, MicrostructureGenerator, generates microstructures using a
Gaussian filter to create random microstructures with a given number of
phases and a particular grain size.
Filter kernel always has a sample and bin index

Address #80

A filter kernel must always have a sample index and a state binning
index. This expresses the commonality between convolutions for MKS,
microstructure generation and spatial statistics.
MicrostructureGenerator returns an integer array

Address #80

The microstructure can only be in discrete states so should be an int.
Create Correlation filter.

Address #80

Removed SpatialStatisicsModel and moved the commonalities to the
Correlation class, a subclass of Filter. The new Correleation class
underlies both the autocorrelate and crosscorrelate functions in
stats.py.
Delete defunce SpatialStatisticsModel class

Address #80
Remove redundant crosscorrelate function.

Address #80
Fix autocorrelate function to return something

Address #80
New notebook for PCA analysis

Address #80
Use PCA on cross and auto correlations

Address issue #80

Use PCA to cluster crosscorrelations and autocorrelations. PCA on
different types of microstructures still needs work.