Add circular_singly_linked_list project skeleton.

data_structures/circular_singly_linked_list/
	-Add dir-structure and skeleton files for the
	circular_singly_linked_list project.
Add all func headers, implement several.

data_structures/circular_singly_linked_list/makefile
	-Compile the executable into `bin/` instead of the project root.

data_structures/circular_singly_linked_list/src/
	circular_singly_linked_list.c
	-Add all necessary circular-singly-linked-list function headers.
	-Add `CSLNode`, `CSLList_t` struct declarations.
	-Define `createCSLList()`, `freeCSLList()`, and `freeCSLNode()`.

data_structures/circular_singly_linked_list/src/test.c
	-Add a `test` module to test all functions implemented in
	`circular_singly_linked_list.(c, h)`; a separate file is
	necessary to maintain the modularity of the main list
	implementation, which should theoretically be easily
	`include`-able in any project.
Implement printCSLList(), add test functions.

data_structures/circular_singly_linked_list/src/
	circular_singly_linked_list.(c, h)
	-Move all function headers from `circular_singly_linked_list.c`
	to `circular_singly_linked_list.h`.
	-Define and document `printCSLList()`.

data_structures/circular_singly_linked_list/src/test.c
	-Define and document `freeData()` and `testCSLList()`.
Impl. insertCSLListHead(), createCSLNode().

data_structures/circular_singly_linked_list/src/
	circular_singly_linked_list.(c, h)
	-Define and document `insertCSLListHead()` and
	`createCSLNode()`.
Impl. (insert|remove)AfterCSLNode(), etc.

data_structures/circular_singly_linked_list/src/
	circular_singly_linked_list.(c, h)
	-Define and document `removeCSLListHead()`,
	`insertAfterCSLNode()`, and `removeAfterCSLNode()`.
Impl. insertAtIndex(), removeAtIndex().

data_structures/circular_singly_linked_list/makefile
	-Compile against the `c99` (instead of `c90`), standard.

data_structures/circular_singly_linked_list/src/circular_singly_linked_list.(c, h)
	-Define and document `insertAtIndex()`, and `removeAtIndex()`.
Add dir-structure for stack project.

data_structures/stack/
	-Add stack project directory-structure and skeleton files.
Impl. createStack(), freeStack(). Add test.c.

data_structures/stack/makefile
	-Compile in my implementation of a `singly_linked_list`, also
	contained in this repository, which will serve as the backbone
	of the stack implementation.

data_structures/stack/src/stack.(c, h)
	-Define and document `createStack()` and `freeStack()`.

data_structures/stack/src/test.c
	-Add a file to contain functions that will test those defined in
	`src/stack.*`.
Impl. peek(), pop(), and push().

data_structures/stack/src/stack.(c, h)
	-Define and document `peek()`, `pop()`, and `push()`.
Finish Stack implementation; fix compiler warning.

data_structures/stack/src/test.c
	-Fix a `printf()` pointer-cast warning in `testStack()`.
Impl. removeCSLNode(), fix bugs in other functions.

data_structures/circular_singly_linked_list/src/
	circular_singly_linked_list.(c, h)
	-Define and document `removeCSLNode()`; fix bugs in
	`insertCSLListHead()`, `removeCSLListHead()` and
	`removeAfterCSLNode()` related to the circularity of the
	linked-list (more specifically, the pointer to the list's head
	inside the "last" node of the list was never getting updated).
Finish circular_singly_linked_list.

data_structures/circular_singly_linked_list/src/
	circular_singly_linked_list.(c, h)
	-Move the `struct CSLNode` declaration from
	`circular_singly_linked_list.h` to
	`circular_singly_linked_list.c`, because it's intended to be
	private and was only exposed to the global scope (informally
	speaking) for some function calls from `src/test.c`.
Merge branch 'feature/data_structures.circular_singly_linked_list' into feature/data_structures

data_structures/circular_singly_linked_list/
	-Implement a circular, singly-linked-list.
Merge branch 'feature/data_structures.stack' into feature/data_structures

data_structures/stack/
	-Implement a stack using my singly-linked-list implementation.
Implement insertion-sort in insertion_sort.py.

algorithms/sorting/insertion_sort.py
	-Implement an in-place insertion sort.
Implement a primitive quicksort in quicksort.py.

algorithms/sorting/quicksort.py
	-Implement an unrefined, out-of-place quicksort algorithm.
Implement an additional, in-place quicksort.

algorithms/sorting/quicksort.py
	-Implement an in-place quicksort `quicksort_in_place()`, which
	improves on the out-of-place `quicksort_out_of_place()`.
	-Add more information to error messages printed by
	`test_quicksort()`.
Implement a mergesort in mergesort.py.

algorithms/sorting/mergesort.py
	-Implement mergesort in `mergesort()`.
	-Define `test_mergesort()` to test `mergesort()`.
Implement a counting sort in counting_sort.py.

algorithms/sorting/counting_sort.py
	-Implement a counting sort in `counting_sort()`.
	-Define `test_counting_sort()` to test `counting_sort()`.
Implement a radix sort in radix_sort.py.

algorithms/sorting/radix_sort.py
	-Implement radix sort in `radix_sort()`.
	-Define `test_radix_sort()` to test `radix_sort()`.