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

The write is on a mutex to:
http://golang.org/src/pkg/log/syslog/syslog.go?s=5455:5498#L254

So this improve not solve nothing.  If this represents a problem the logger should run in a goroutine

The log not is too chatty so this not should be a problem if debug or trace are off