Simplify type signatures and make function implementations more strait-forward

This results in more code duplication, but the resulting type signatures are much simpler and the implementations are far easier to understand. It should be easier for llvm to optimise things too, seeing as closures are not used.
Merge pull request #77 from bjz/simplify-array

Simplify type signatures and make function implementations more strait-forward
Made 'array' module public
Updated to latest Rust: Added 'extern crate debug;'
Merge pull request #79 from ozkriff/master

Made 'array' module public
Removed 'extern crate debug', added fmt::Show for Angle
Merge pull request #80 from ozkriff/master

Removed 'extern crate debug', added fmt::Show for Angle