Replace _rootLevel with root._level (#69)

Previously root._level and _rootLevel both existed and could be
different.  The existing code took care to always use _rootLevel
instead of root._level, but I think it'd be better to not have the
extra Level variable at all.

This also provides an opportunity to expose a public constant for the
the default logging level, further addressing
https://github.com/dart-lang/logging/issues/57.
diff --git a/lib/src/logger.dart b/lib/src/logger.dart
index bb71838..a34df50 100644
--- a/lib/src/logger.dart
+++ b/lib/src/logger.dart
@@ -7,7 +7,7 @@
 /// Whether to allow fine-grain logging and configuration of loggers in a
 /// hierarchy.
 ///
-/// When false, all logging is merged in the root logger.
+/// When false, all hierarchical logging instead is merged in the root logger.
 bool hierarchicalLoggingEnabled = false;
 
 /// Automatically record stack traces for any message of this level or above.
@@ -15,11 +15,8 @@
 /// Because this is expensive, this is off by default.
 Level recordStackTraceAtLevel = Level.OFF;
 
-/// Level for the root-logger.
-///
-/// This will be the level of all loggers if [hierarchicalLoggingEnabled] is
-/// false.
-Level _rootLevel = Level.INFO;
+/// The default [Level].
+const defaultLevel = Level.INFO;
 
 /// Use a [Logger] to log debug messages.
 ///
@@ -83,7 +80,9 @@
   Logger._internal(this.name, this.parent, Map<String, Logger> children)
       : _children = children,
         children = UnmodifiableMapView(children) {
-    if (parent != null) parent._children[name] = this;
+    if (parent != null) {
+      parent._children[name] = this;
+    }
   }
 
   /// Effective level considering the levels established in this logger's
@@ -93,7 +92,7 @@
       if (_level != null) return _level;
       if (parent != null) return parent.level;
     }
-    return _rootLevel;
+    return root._level;
   }
 
   /// Override the level for this particular [Logger] and its children.
@@ -106,7 +105,7 @@
             'Please set "hierarchicalLoggingEnabled" to true if you want to '
             'change the level on a non-root logger.');
       }
-      _rootLevel = value;
+      root._level = value;
     }
   }
 
@@ -235,7 +234,7 @@
   }
 
   /// Top-level root [Logger].
-  static final Logger root = Logger('');
+  static final Logger root = Logger('').._level = defaultLevel;
 
   /// All [Logger]s in the system.
   static final Map<String, Logger> _loggers = <String, Logger>{};
diff --git a/test/logging_test.dart b/test/logging_test.dart
index b24a8a9..53fbf4e 100644
--- a/test/logging_test.dart
+++ b/test/logging_test.dart
@@ -73,6 +73,12 @@
     expect(() => Logger('.c'), throwsArgumentError);
   });
 
+  test('root level has proper defaults', () {
+    expect(Logger.root, isNotNull);
+    expect(Logger.root.parent, null);
+    expect(Logger.root.level, defaultLevel);
+  });
+
   test('logger naming is hierarchical', () {
     var c = Logger('a.b.c');
     expect(c.name, equals('c'));