Don't force input data to be a 2D array

In some situations the incoming data may not be in a 2D array.

This can be handled with a custom data-handler.
Allow X axis boundary to be retrieved by the data-handler

This makes sense as the data handler may have to parse the
raw data to retrieve the x axis