RUBY-611 fixing usage of buffer after deallocation
RUBY-612 fixing usage of new buffer when potentially null
RUBY-620 fix unused or uninitialized variables
RUBY-615 adding license/copyright source headers

As recommended by ASF policies for the Apache 2.0 license, I've added back the source headers to all "non-trivial" source files in the project.

Things I skipped:

* The benchmark suite (I'm going to delete this)
* All trivial/boiler-plate files
* 3rd-party files (Removed in commit from RUBY-618)
RUBY-615 adding required notice file

Adding the required NOTICE file for compliance with our Apache 2.0 license. Since it's not required to include non-bundled dependencies, this file only contains our own copyright information.

With the changes I've made in RUBY-618, the only bundled dependency we have in this project now is with the BSON package from the Java driver. However, since it's also our own and licensed under Apache 2.0 we aren't required to list it here.
RUBY-615 removing unused benchmark suite

I think we can safely remove these at this point. AFAIK we're not really using them anymore and these performance tests are covered in a separate project now that looks for performance regressions on all drivers (mongo-performance).

This isn't directly related to RUBY-615. I'm including it here because I'm deleting these files rather than adding the license and copyright source headers.

In additional to cleanup and license compliance, getting rid of this unused benchmarking suite will allow us to filter out the large pdf file here and reduce the size of our repo quite a bit.
RUBY-618 remove dependency on 3rd-party utf8 encoding helpers

There was some concern of license compatibility with the 3rd-party encoding helpers we currently have in the bson c-extension. This commit removes the 3rd-party code and replaces it with an alternate implementation that came from the new mongo-c-driver.

This commit is a pre-requisite to RUBY-615 which is an effort to correct/improve our Apache 2.0 license compliance.
RUBY-608 fixing uri parser so that it handles authentication correctly

* fixes uri parser to pass auth values to mongoclient
* fixes auth uri tests
* behavior correction to auth parsing so that it matches the uri spec
* removal of irrelevant test after behavior correction
RUBY-533: Split bulk inserts into many messages
RUBY-590: make tests run faster
RUBY-590: remove rbx from .travis.yml
RUBY-590: remove non-essential builds from .travis.yml
RUBY-621: remove lock_with_hack (unused)
RUBY-621: remove each_with_object
RUBY-577: add_user support for roles and userSource
RUBY-577: support for delegated authentication and logout
RUBY-577: update old tests for delegated auth
RUBY-577: add new tests for delegated auth
RUBY-577: temporarily disable testing on travis

The patch for enabling auth on Travis has not been pushed to the travis
workers yet:

https://github.com/travis-ci/travis-cookbooks/pull/180

Once it has been rolled out we can remove the skipping of this test.
minor: editing yard template