Check for nil in viper.Sub

Fixes #191
diff --git a/viper.go b/viper.go
index 0fbd051..6964041 100644
--- a/viper.go
+++ b/viper.go
@@ -532,6 +532,10 @@
 func (v *Viper) Sub(key string) *Viper {
 	subv := New()
 	data := v.Get(key)
+	if data == nil {
+		return nil
+	}
+
 	if reflect.TypeOf(data).Kind() == reflect.Map {
 		subv.config = cast.ToStringMap(data)
 		return subv
diff --git a/viper_test.go b/viper_test.go
index 8558f92..72f695e 100644
--- a/viper_test.go
+++ b/viper_test.go
@@ -760,6 +760,9 @@
 
 	subv = v.Sub("clothing.pants.size")
 	assert.Equal(t, subv, (*Viper)(nil))
+
+	subv = v.Sub("missing.key")
+	assert.Equal(t, subv, (*Viper)(nil))
 }
 
 var yamlMergeExampleTgt = []byte(`