Dry Levels and added custom formatters.

- dried a little
- removed 2 levels
- added caller
- added possibility to set custom format (i.e. tabbed/csv like)
- added conditionals logs Errorif, Panicif, Fatalif
Yes, you're right, but the thing is that we must allow some kind of customization of the output, because for example we collect logs, and we use a TSV like format, so instead of "\s" I use "\t" in a sightly different order. You can ask the @team to not change the "defaults".

Here for example my current one:

```go
func init() {
	level := 0
	flag.IntVar(&level, "log-level", 0, "details of logs, 0 all details. 3 just errors")
	std.Format = func(file string, prefix string, level log.Level, msg string) string {
		ts := time.Now().Format("2006-01-02 15:04:05.999")
		if prefix != "" {
			prefix += "\t"
		}
		return fmt.Sprintf("%s\t%s%s\t%s\t%s", ts, prefix, level, file, msg)
	}
}
```