Add 'todo' script

This patch adds a file scripts/todo.sh which searches for and displays all 'TODO:'
and 'FIXME:' tags in a list of directories, passed as command line
arguments. Additionally, a 'make todo' target has been added which executes this
script with a list of all of the source directories.
memory: Make destination types void pointers

The idea here is that the memory functions should be type agnostic, so
void pointers is the most appropriate way of expressing this.
Implement contiguous memory allocation and deallocation

This patch supplements the existing placement address algorithm for
memory allocation with a dynamic memory allocation and deallocation
system. Some of the implemented features include:

    1) The heap is defined as a data structure which can be created at
       run time, allowing for multiple different heaps.

    2) Heaps can expand and contract at run-time as necessary.

    3) Heaps contain an index of blocks, sorted by size.

    4) Block allocation occurs on a first fit basis.

    5) A block is book-ended by a header and a footer.

    6) A block can be either active or not (a hole).

    7) Freeing a block changes its status to a hole. On doing so, the
       heap will scan the blocks immediately to the left and right to
       see if they are holes as well. If so, the holes will be
       merged. This prevents fragmentation over time.

Based off of James Molloy's kernel development tutorial, available here:
    http://www.jamesmolloy.co.uk/tutorial_html/7.-The%20Heap.html

Addresses issue #5: Add a memory manager
ordered-array: Implement destructor
ordered-array: Use kcreate over kmalloc
Remove stray file