Graph2d styling updates

This is a merge of the other PRs we've discussed previously. Normally I prefer to split each function into a separate branch to allow easier reviewing / merging / rejecting, but I hope this merged one is ok as we've discussed a little already. I'll close the other PRs.

There are a few more additions above those in the other PRs as I've added some more formatting to other parts of the group. It's now possible to separately style most parts of the line, fill, point by adding a ```style``` option. One area that this causes an issue is for the dataPoint - this already has an option called ```style``` to set the shape of the point. It makes sense that all these styles use the same option, so either the dataPoint.style should be renamed, or we should rename all the style options. There's a nice example that shows user defined styling on the go (Example 17).