Geometry primitives (basic linear algebra) for Rust
bors-servo Auto merge of #310 - servo:flatten-transform, r=kvark
transform3d: Introduce Transform3D::project_to_2d to flatten a transform

Need to use this for servo/webrender#3394.

The normalization of perspective is not necessary but Gecko does it as a
performance optimization, and ScaleOffset in WR wouldn't handle this.


But in any case I'm happy to teach ScaleOffset about that case instead if you
think it's better.

<!-- Reviewable:start -->
This change is [<img src="" height="34" align="absmiddle" alt="Reviewable"/>](
<!-- Reviewable:end -->
Latest commit 03f5a61 Dec 7, 2018