logging system, syslog and abstraction improvements

This is a WIP, this is a little roadmad and some questions I have.

- [x] Create `server.Logger` interface and add `server.SetLogger` method
- [x] Modify all the actual call to the new format
- [x] Network syslog
- [ ] `gnatsd` options and link Network syslog
- [x] fix this race condition on `server.SetLogger()`
- [x] Tests

Questions:
- Is really needed the [`alreadyFormatted`](https://github.com/apcera/gnatsd/blob/master/server/log.go#L57
) function? We can control this in the codebase
- Some [options like LogFile, FidFile](https://github.com/apcera/gnatsd/blob/master/server/opts.go#L45) are related more to the daemon than the Server class, we can move away? and keep it at the gnatsd.go?

Related to: https://github.com/apcera/gnatsd/issues/7

This does not match up with the above change `old := os.Stdout // keep backup of the real stdout`