This diff makes major changes to the implementation of the `perspective()` function:

- Fix perspective formula to be Rectilinear. Otherwise we get funny misalignment artifacts -- Notice that the vertical grid lines in http://jsfiddle.net/r3y93qpe/ don't end in the expected place
- Rotate around `ze=depth/2`. Otherwise, the chart is off-center when rotated -- See http://jsfiddle.net/07LL525c/
- Exports the perspective function as Highcharts.perspective, so it can be used by plugins.
- Uses isometric mode (No perspective projection) when `viewDistance==0`
- Most importantly, Projection parameters (alpha, beta, origin) are now calculated inside of perspective() function, instead of in every call place.
  - Simpler code at call place
  - Avoids inconsistent calculations at each origin -- In particular when using `inverted=true` and `axis.reversed=true` -- E.g., http://jsfiddle.net/m8ppj1mx/
  - caller must specify if the element is being drawn inside the plot area or not, so that we can compensate the SVG transform.

This change doesn't affect Renderer.arc3d(), pie charts and donut charts.