add urandom engine and set it as default RAND method.

This is a proposed solution to the OpenSSL fork problem.
allow the backend to register/unregister the engine via methods
add urandom engine register/unregister tests

also rename some variables in the urandom engine for easier comparison
fix fd int check, remove stray comedy printf()
remove unneeded INT_MAX check
additional check to verify the ENGINE_new doesn't return null
Add dummy engine to tests and test other engine scenarios

Modify register_urandom_engine to fix a leak
improve init/finish engine funcs, do a better job inc/dec struct/func refs
check if the fd is available via engine status
remove inaccurate comment
rename urandom engine to osrandom engine
remove stray break, add FD_CLOEXEC, reset fd var even if close fails
Merge branch 'master' into urandom-engine

* master:
  Split OpenSSL binding
  Fixed test for earlier exceptino
  Rearrange
  Move GCM tag size/value validation farther forward -- this makes it easier by not requiring future backends to implement the same checks
  expose num_locks and {get,set}_{id,locking}_callback
  Make the PyPy tox job consistent with the main one.
  THis should be a seperate PR
  Typo fix
  This page has been subsumed by the index
  Bump the copyright year
  Document compiling OpenSSL to avoid conflicts

Conflicts:
	cryptography/hazmat/backends/openssl/backend.py
Merge branch 'master' into urandom-engine

* master:
  Revert "Travis now has an up to date pypy"
  Make capitalization in the glossary consistent and sort it
  Make lib and ffi be private on backend
handle lib/ffi on backend becoming private
add brewed openssl to travis osx
move script to separate file for readability
let's see what version of openssl is already installed on these slaves
remove unneeded openssl bottle
commoncrypto initial backend