Cleanup: decltype and type_traits

- uses the RETURNS macro instead of decltpye to remove duplication and ensure
  noexcept correctnes, fixes #8 .
- style cleanup: Matrix and Bool Matrix, wip #52 .
- replace some <type_traits> with transformation traits, fixes #39 .