Improve Noise2D noise map tiling support & improve code consistency

A lot of these changes improve the code consistency for this project, as well as adding a few convenience methods to classes to better emulate the original LibNoise library.

Most notably, I reworked the Noise2D class to add an uncropped data matrix that contains a border of extra noise data. This is used to calculate the edges of normal map textures to allow for full tiling support for noise map textures.