Modernizing performance benchmarks

- Write generic test driver loop in blas, cat and lapack benchmarks
- Rename lapack/decompositions.jl -> lapack.factorizations.jl
- Update path of data files in shootout benchmarks
- Sort benchmark now requires SortingAlgorithms package. Added HeapSort
  and RadixSort benchmarking
- Commented out broken randmatmul go microbenchmark
- Fortran microbenchmarks compile modules
- Added missing -lm dependency to C microbenchmark

TODO Fortran microbenchmark can segfault with OpenBLAS v0.2.8
Improved consistency between tests

- Revert blas test sizes to original spec
- In blas, cat and lapack tests, consistently use iter to specify number
  of trials and i to loop over iterations
- Retab to 4-space indent
Programmatically extracts version numbers to create microbenchmark
report table.
Conditionally add the relative path to the datafiles in the shootout
benchmarks.
Consolidate blas, cat and lapack test drivers
Tiny tweaks to Julia microbenchmark
Removed debugging print statements
Makefile now detects and warns against gfortran/64-bit blas combo

As gfortran does not support calling external BLAS libraries with 64-bit
integer indexing (this causes the dgemm call to fail), the Makefile now
emits a warning and turns off the -fexternal-blas option when
FC=gfortran and USE_BLAS64=0 are specified in the Julia base Make.user
file.

Also introduces BLAS_LIB variable to facilitate specifying a custom BLAS
library.
Implements randmulstat go benchmark.

Also adds instructions on how to set up go properly so that the
benchmarks can be run.
Better handling of BLAS and libm/openlibm usage in microbenchmark Makefile
Reorders languages in summary table
Defined ctranspose for ranges. Addresses #4619
Merge pull request #4669 from malmaud/n4619

Defined ctranspose for ranges. Addresses #4619
Update documentation for statistical functions

Recommend users who need to handle missing data to use the DataArrays
package. [#4552]

TODO: Revisit documentation of functions currently not overloaded by
      DataArrays. [JuliaStats/DataArrays.jl#3]
internal rename: readBuffer => read_buffer. We don't use snake case.
internal cleanup: excise is_file_readable.

This was an awful, ancient function. This is exactly what the
isreadable(path) function does, so there's no need for this. Also,
in most of the places we were calling it, skipping over files that
exist but are not readable is unhelpful – it would be better to
fail and let the user know that a file that was in the lookup path
and *should* be readable isn't. Arguably, we should even weaken the
test to just `ispath` and fail if the thing exists but is not a
regular file and is, say, a directory unexpectedly.
Merge pull request #4651 from JuliaLang/cjh/perf-upd

RFC: Modernizing performance benchmarks
Add makevar SYSCONFDIR, closes #4560
Update NEWS.md with complex elementary functions
Expand NEWS with a summary, and add some specific points