Memory allocation failure is now handled and propagated through the return chain

- As with before in order to detect memory failures the library must be
  compiled with SAFE_MEMORY_ALLOCATION on.
- Done a lot of styling changes too.
- Tried to propagate returns but sometimes it is hard. Will need to make the return
  system and the errors logging system more robust so that it's clear how errors are propagated
  and handled everywhere in the library. This will be the goal but the achieving of it
  will probably be gradual since it would involve changes all over the library
--fail-fast now works properly for the testing framework. Issue #12