Make everything generic + add type aliases.

This makes everything generic with regard to:
* N: the scalar type (f32, f64) that implements the new trait `math::Scalar`.
* P: the point type (Pnt1, Pnt2, Pnt3, Pnt4) that implements the new trait `math::Point`.
* V: the vector type (Vec1, Vec2, Vec3, Vec4) that implements the new trait `math::Vect`.
* M: the isometric transform type (Iso2, Iso3, Iso4) that implements the new trait `math::Isometry`.

There is no conditional compilation any more, so the user can compile the library with a plain old
`cargo build` and can drop the `features` section on his dependency entry.

All types are generic, to simplify they uses, aliases are defined for all persistent geometric
primitives, bounding volumes, and rays. For example:

* Cuboid:  the generic cuboid type.
* Cuboid3: an alias for the 3D, f32 cuboid type (Cuboid<Vec3<f32>>).
* Cuboid3d: an alias for the 3D, f64 cuboid type (Cuboid<Vec3<f64>>).

Similar aliases suffixes apply for the other types (e.g. Ray2, Ray2d, Convex3, Convex3d, etc.).
Note that, things like `Cuboid3d::new(Vec3::new(1.0, 2.0, 1.0))` is not allowed by the rust
compiler. You still have to use the generic constructor: `Cuboid::new(Vec3::new(1.0, 2.0, 1.0))`.

Some trait have been merged:
* `BroadPhase` groups all the other broad-phase related trait (`RayCastBroadPhase`, `InterferenceBroadPhase`, etc.).
* `BoundingVolume` is merged with `LooseBoundingVolume`, and has new methods to tighten the volume too.

For technical reasons, the `RayCast` trait has been split into `LocalRayCast` and `RayCast`. This
is very likely to change in the future to merge them back into a single `RayCast` trait. In the
mean time, `RayCast` is to cast rays with a transformation matrix, while `LocalRayCast` does not
allow to pass a transformation matrix.

This removes the `build` directory that is no longer useful. Use `ncollide` instead of e.g.
`ncollide3df32`.

Fix #19
Fix #20
Fix #23