Implement insertion sort with the sort unit tests

Insertion sort iterates over a list until it finds an element bigger
Than it and then inserts the element before that node.
Otherwise, it puts the element at the end.
If the list is empty, it creates one.
Also implements insertion before.
Type dynamic array unit test and header. Operations need to be
implemented too
Implement dynamic array library with tests and preconditions.

Type up exercise 34 from LCTHW and start adding asserts about
arguments to each function.
Update .gitignore to ignore library files and test binaries

Add *.a, *.so and *_tests rules to .gitignore.
Finish application of defensive programming to exercise.

Added checks and thought about invariants of functions
Merge branch 'master' of https://github.com/Micaiah-Chang/LCTHW