Adds #add_first_node

The #initialize, #push_bottom, #push_top methods repeat the same operation if the linked list is empty. This change moves this operation into a helper method #add_first_node to make it DRYer.
Adds #add_first_node to SinglyLinkedList

Same change as recently made for DoublyLinkedList; see previous commit message.
Add string buffer data structure.

String buffer reduces runtime of concatenating strings.
Creates buffer array to store strings while concatenating.
Once all strings to be joined have been added to the buffer
the program concatenates the characters together once.

Alternatively the program might concatenate the strings for
each word in the array of strings to be joined.

Monkey patched String class to add class method called join_words.

.join_words creates a StringBuffer object and appends all words to
the buffer. Once all words have been appended it call #to_s on
the buffer which concatenates the strings.
Revise code to update string rather than create new
string objects.

In Ruby strings are mutable. The #concat and #<<
methods allow for updating a string in place.

Alternatively the #+ method creates a new object
in memory rather than destructively altering the
string receiving the message.
Removes EmptyBufferError. On StringBuffer creation #to_s is called.
When a StringBuffer is created with an empty buffer the program
therefore explodes. Changed it to return empty string.

Removes my_* syntax from tests.
Removes testing of instance type.
Merge pull request #4 from hwhelchel/string-buffer

String buffer