"kpm restore" prints out the dependency graph after restore

parent #447 

npm is using archy (https://github.com/substack/node-archy/blob/master/index.js) to print the dependency graph and I mimic the logic in archy to implement this feature.

Note that we print dependency graph for each target framework. Here are the dependency graphs for `PackageManager` itself:
```
Microsoft.Framework.PackageManager 1.0.0-SNAPSHOT [.NETFramework,Version=v4.5]
├── Microsoft.Framework.CommandLineUtils 1.0.0-SNAPSHOT
├─┬ Microsoft.Framework.Runtime 1.0.0-SNAPSHOT
│ ├─┬ Microsoft.Bcl.Metadata 1.0.11-alpha
│ │ └── Microsoft.Bcl.Immutable 1.1.20-beta
│ └── Newtonsoft.Json 5.0.8
├── Microsoft.Framework.Runtime.Common 1.0.0-SNAPSHOT
├── Microsoft.Framework.Runtime.Interfaces 1.0.0-SNAPSHOT
└─┬ Microsoft.Framework.Runtime.Roslyn 1.0.0-SNAPSHOT
  └─┬ K.Roslyn 1.0.0-alpha3-10032
    ├─┬ Microsoft.CodeAnalysis.Common 0.7.4060502-beta
    │ ├── Microsoft.Bcl.Immutable 1.1.20-beta
    │ └── Microsoft.Bcl.Metadata 1.0.11-alpha
    └── Microsoft.CodeAnalysis.CSharp 0.7.4060502-beta

Microsoft.Framework.PackageManager 1.0.0-SNAPSHOT [K,Version=v1.0]
├── Microsoft.Framework.CommandLineUtils 1.0.0-SNAPSHOT
├─┬ Microsoft.Framework.Runtime 1.0.0-SNAPSHOT
│ ├─┬ Microsoft.Bcl.Metadata 1.0.11-alpha
│ │ └── Microsoft.Bcl.Immutable 1.1.20-beta
│ └── Newtonsoft.Json 5.0.8
├── Microsoft.Framework.Runtime.Common 1.0.0-SNAPSHOT
├── Microsoft.Framework.Runtime.Interfaces 1.0.0-SNAPSHOT
├─┬ Microsoft.Framework.Runtime.Roslyn 1.0.0-SNAPSHOT
│ ├─┬ K.Roslyn 1.0.0-alpha3-10032
│ │ ├─┬ Microsoft.CodeAnalysis.Common 0.7.4060502-beta
│ │ │ ├── Microsoft.Bcl.Immutable 1.1.20-beta
│ │ │ └── Microsoft.Bcl.Metadata 1.0.11-alpha
│ │ └── Microsoft.CodeAnalysis.CSharp 0.7.4060502-beta
│ ├── System.Resources.ResourceWriter 4.0.0.0
│ ├── System.Runtime.Handles 4.0.0.0
│ └── System.Text.Encoding 4.0.20.0
├── System.Collections 4.0.10.0
├── System.Collections.Concurrent 4.0.0.0
├── System.ComponentModel 4.0.0.0
├── System.Console 4.0.0.0
├── System.Diagnostics.Debug 4.0.10.0
├── System.Diagnostics.Tools 4.0.0.0
├─┬ System.Dynamic.Runtime 4.0.0.0
│ └── System.Linq.Expressions 4.0.0.0
├── System.Globalization 4.0.10.0
├─┬ System.IO 4.0.0.0
│ └── System.Text.Encoding 4.0.10.0
├─┬ System.IO.Compression 4.0.0.0
│ └── System.Text.Encoding 4.0.10.0
├─┬ System.IO.FileSystem 4.0.10.0
│ ├── System.IO.FileSystem.Primitives 4.0.10.0
│ ├── System.Runtime.Handles 4.0.0.0
│ └── System.Text.Encoding 4.0.10.0
├── System.IO.FileSystem.Watcher 4.0.0.0
├── System.Linq 4.0.0.0
├── System.ObjectModel 4.0.0.0
├─┬ System.Reflection 4.0.10.0
│ └── System.Reflection.Primitives 4.0.0.0
├── System.Reflection.Extensions 4.0.0.0
├── System.Reflection.TypeExtensions 4.0.0.0
├── System.Resources.ResourceManager 4.0.0.0
├── System.Runtime 4.0.20.0
├── System.Runtime.Extensions 4.0.10.0
├─┬ System.Runtime.InteropServices 4.0.20.0
│ ├── System.Reflection.Primitives 4.0.0.0
│ └── System.Runtime.Handles 4.0.0.0
├── System.Runtime.Loader 4.0.0.0
├── System.Runtime.Serialization.Primitives 4.0.0.0
├── System.Security.Cryptography.Encryption 4.0.0.0
├─┬ System.Security.Cryptography.Hashing.Algorithms 4.0.0.0
│ └── System.Security.Cryptography.Hashing 4.0.0.0
├── System.Text.RegularExpressions 4.0.0.0
├── System.Threading 4.0.0.0
├── System.Threading.Timer 4.0.0.0
├── System.Threading.Tasks 4.0.10.0
├── System.Threading.Thread 4.0.0.0
├─┬ System.Xml.ReaderWriter 4.0.10.0
│ └── System.Text.Encoding 4.0.10.0
├── System.Xml.XDocument 4.0.0.0
└── System.Xml.XmlSerializer 4.0.0.0
```
If a `WriteLine` extension method just called `Write(String.Empty)` then how would that be any different? It's just making the code more readable, no? All the same stuff (including any locks) still executes, no?