Implement the suggestions as described in issue #4
Add CallerFileHandler and CallerFuncHandler to to implement #8.

This change adds three fields to the Record struct and a call to runtime.Caller for every new log record.
The additional overhead is measurable, but small relative to the cost of adding additional context fields and formatting the record.
Tests and benchmarks also added.
Simplify the API for CallerFileHandler and CallerFuncHandler.
Only store the PC in the Record struct, the file name and line number can be retrieved when needed.

This change improves speed and reduces memory use.
Add sanity checks.
Add work around for Go issue 7690.
merge filename/custom key names pull requests
merge latest from master