Full Accept Header Support

This commit much more fully supports the HTTP spec when it comes to the Accept header.  See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html for the full spec.
Performance Update for AcceptTree.Flatten

AcceptTree.Flatten was previously directly using append() on a default (zero capacity) slice several times, and it would recurse through both the left and right nodes.  Since append() is much more expensive when cap(slice) == len(slice) and allocating a separate slice for each recursive call is inefficient, I added a Size value to AcceptTree, which keeps track of the total number of nodes in the tree.  Flatten, then, can allocate the full capacity required for all elements in the tree, then pass a pointer to the fully allocated slice to a helper function, which now performs the work of populating the fully allocated slice.  This means the slice is allocated once and append() is never called when cap(slice) == len(slice).
Forgot to run gofmt again
Added test for Flatten performance

Added a simple test to ensure that Flatten is allocating exactly as much memory as it needs.  This gives us some assurance that it's not running append() when cap(slice) == len(slice).
Updated some comments and documentation
Renamed wrapCodec to wrapCodecWithContentType to make it more obvious what the function does
Fixed comment to not be as misleading
Updated comments for ContentTypeMatcherCodec
HAH!  Fixed CodecService to once again be completely backward-compatible, instead of having a change to a function parameter.
Fixed documentation after last backward compatibility update
Performance Pass

strings.Contains and strings.Split seem to be using up a much larger amount of execution time than I was hoping for.  So I changed the processes to use IndexRune wherever possible, which seems to have sped everything up nicely.
Second Performance Pass

Updated the accept matching logic to attempt a simple matching if the passed in Accept header is simple enough.  This makes GetCodecForResponding roughly 500 nanoseconds faster for simple Accept headers (executing in about 200 nanoseconds total as a best case).
Forgot to run gofmt again
My codec needs to know the matched content type, so I changed contentTypeCodecWrappeer to add that to the options passed to Marshal
Simple Case Fix

The code that was trying to handle the simplest Accept header case was causing simple Accept headers with unsupported types (e.g. curl's default is simply '*/*') to return an error.  Fixed.
Merge branch 'master' into radiobox-master

Conflicts:
	services/web_codec_service.go

Needed to alter getCodecByMimeString to return a ContentTypeNotSupportedError.
Merge pull request #22 from Radiobox/master

Support the HTTP Spec When Parsing the Accept Header