Split out io from util.dart (#57)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7a198db..608c1d5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.5.16
+
+* Split out IO dependency from `util.dart`, so all other utilities can be used
+  on any platform.
+
 ## 0.5.15
 
 * Add `BasicInfo.resetIds` to free internal cache used for id uniqueness.
diff --git a/bin/code_deps.dart b/bin/code_deps.dart
index c9b0544..27278b6 100644
--- a/bin/code_deps.dart
+++ b/bin/code_deps.dart
@@ -30,6 +30,7 @@
 
 import 'package:dart2js_info/info.dart';
 import 'package:dart2js_info/src/graph.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:dart2js_info/src/util.dart';
 
 main(args) async {
diff --git a/bin/debug_info.dart b/bin/debug_info.dart
index 89733eb..c7925ea 100644
--- a/bin/debug_info.dart
+++ b/bin/debug_info.dart
@@ -10,6 +10,7 @@
 
 import 'package:dart2js_info/info.dart';
 import 'package:dart2js_info/src/graph.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:dart2js_info/src/util.dart';
 
 main(args) async {
diff --git a/bin/deferred_library_check.dart b/bin/deferred_library_check.dart
index 19cceef..995c366 100644
--- a/bin/deferred_library_check.dart
+++ b/bin/deferred_library_check.dart
@@ -39,7 +39,7 @@
 import 'dart:io';
 
 import 'package:dart2js_info/deferred_library_check.dart';
-import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:yaml/yaml.dart';
 
 Future main(List<String> args) async {
diff --git a/bin/deferred_library_layout.dart b/bin/deferred_library_layout.dart
index 5bcb840..5a124ad 100644
--- a/bin/deferred_library_layout.dart
+++ b/bin/deferred_library_layout.dart
@@ -8,7 +8,7 @@
 import 'dart:io';
 
 import 'package:dart2js_info/info.dart';
-import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
 
 main(args) async {
   AllInfo info = await infoFromFile(args.first);
diff --git a/bin/deferred_library_size.dart b/bin/deferred_library_size.dart
index 129e95f..9800966 100644
--- a/bin/deferred_library_size.dart
+++ b/bin/deferred_library_size.dart
@@ -8,7 +8,7 @@
 import 'dart:math';
 
 import 'package:dart2js_info/info.dart';
-import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
 
 main(args) async {
   // TODO(het): Would be faster to only parse the 'outputUnits' part
diff --git a/bin/diff.dart b/bin/diff.dart
index 8be1dd3..4d2c229 100644
--- a/bin/diff.dart
+++ b/bin/diff.dart
@@ -4,6 +4,7 @@
 
 import 'package:dart2js_info/info.dart';
 import 'package:dart2js_info/src/diff.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:dart2js_info/src/util.dart';
 
 /// A command-line tool that computes the diff between two info files.
diff --git a/bin/function_size_analysis.dart b/bin/function_size_analysis.dart
index 4e7ba13..c0f304f 100644
--- a/bin/function_size_analysis.dart
+++ b/bin/function_size_analysis.dart
@@ -10,6 +10,7 @@
 
 import 'package:dart2js_info/info.dart';
 import 'package:dart2js_info/src/graph.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:dart2js_info/src/util.dart';
 
 main(args) async {
diff --git a/bin/info_json_to_proto.dart b/bin/info_json_to_proto.dart
index 28aad13..bd964cf 100644
--- a/bin/info_json_to_proto.dart
+++ b/bin/info_json_to_proto.dart
@@ -8,7 +8,7 @@
 import 'dart:io';
 
 import 'package:dart2js_info/proto_info_codec.dart';
-import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
 
 main(args) async {
   if (args.length != 2) {
diff --git a/bin/library_size_split.dart b/bin/library_size_split.dart
index 028e5a1..810f50b 100644
--- a/bin/library_size_split.dart
+++ b/bin/library_size_split.dart
@@ -63,7 +63,7 @@
 import 'dart:math' show max;
 
 import 'package:dart2js_info/info.dart';
-import 'package:dart2js_info/src/util.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:yaml/yaml.dart';
 
 main(args) async {
diff --git a/bin/live_code_size_analysis.dart b/bin/live_code_size_analysis.dart
index a6eb850..c721409 100644
--- a/bin/live_code_size_analysis.dart
+++ b/bin/live_code_size_analysis.dart
@@ -38,6 +38,7 @@
 import 'dart:io';
 
 import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/io.dart';
 import 'package:dart2js_info/src/util.dart';
 
 import 'function_size_analysis.dart';
diff --git a/lib/src/io.dart b/lib/src/io.dart
new file mode 100644
index 0000000..dde9bee
--- /dev/null
+++ b/lib/src/io.dart
@@ -0,0 +1,10 @@
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:dart2js_info/info.dart';
+
+Future<AllInfo> infoFromFile(String fileName) async {
+  var file = await new File(fileName).readAsString();
+  return new AllInfoJsonCodec().decode(jsonDecode(file));
+}
diff --git a/lib/src/util.dart b/lib/src/util.dart
index 3ab0a64..5754432 100644
--- a/lib/src/util.dart
+++ b/lib/src/util.dart
@@ -4,10 +4,6 @@
 
 library dart2js_info.src.util;
 
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
 import 'package:dart2js_info/info.dart';
 
 import 'graph.dart';
@@ -149,8 +145,3 @@
   helper(metric);
   return sb.toString();
 }
-
-Future<AllInfo> infoFromFile(String fileName) async {
-  var file = await new File(fileName).readAsString();
-  return new AllInfoJsonCodec().decode(jsonDecode(file));
-}
diff --git a/pubspec.yaml b/pubspec.yaml
index 1677ba8..7092c0d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: dart2js_info
-version: 0.5.15
+version: 0.5.16
 
 description: >
   Libraries and tools to process data produced when running dart2js with