Return fields provided by user only

When the user specifies Fields with his or her selector, filter out
fields that are not in the Fields list.

BugzId: 43810
diff --git a/src/mango_cursor_text.erl b/src/mango_cursor_text.erl
index 847b04c..9f2beeb 100644
--- a/src/mango_cursor_text.erl
+++ b/src/mango_cursor_text.erl
@@ -35,7 +35,8 @@
     limit,
     skip,
     user_fun,
-    user_acc
+    user_acc,
+    fields
 }).
 
 
@@ -53,7 +54,6 @@
     Limit = erlang:min(DreyfusLimit, couch_util:get_value(limit, Opts, 50)),
     Skip = couch_util:get_value(skip, Opts, 0),
     Fields = couch_util:get_value(fields, Opts, all_fields),
-
     {ok, #cursor{
         db = Db,
         index = Index,
@@ -101,7 +101,8 @@
         skip = Skip,
         query_args = QueryArgs,
         user_fun = UserFun,
-        user_acc = UserAcc
+        user_acc = UserAcc,
+        fields = Cursor#cursor.fields
     },
     try
         execute(CAcc)
@@ -184,11 +185,12 @@
 
 
 apply_user_fun(CAcc, Doc) ->
+    FinalDoc = mango_fields:extract(Doc, CAcc#cacc.fields),
     #cacc{
         user_fun = UserFun,
         user_acc = UserAcc
     } = CAcc,
-    case UserFun({row, Doc}, UserAcc) of
+    case UserFun({row, FinalDoc}, UserAcc) of
         {ok, NewUserAcc} ->
             CAcc#cacc{user_acc = NewUserAcc};
         {stop, NewUserAcc} ->