Fix subtask-factory lookup to not fail when preloaded from another file

Before this change, plugin failed to lookup a subtasks-factory when
a task with this subtasks-factory was preloaded using a task
reference [1]. While preloading a task, all the subtasks are copied
to the current task. Since the subtasks-factory property was a String,
it does not maintain the information regarding the location of the
subtasks-factory. Thus, fix this issue by using ConfigSourcedValue as
the type for subtasks-factory property, which helps in tracking the
location of the subtasks-factory. Add tests for the same.

[1]
file: `All-Projects:refs/meta/config:task.config`
```
[root "root task"]
    applicable = status:open
    preload-task = //common.config^simple task with subtasks
```

file: `All-Projects:refs/meta/config:task/common.config`
```
[task "simple task with subtasks"]
  applicable = is:open
  subtasks-factory = simple static tasks-factory

[tasks-factory "simple static tasks-factory"]
    names-factory = names-factory static list
    pass = True

[names-factory "names-factory static list"]
    type = static
    name = my a task
```

Change-Id: Ie173ad1e29c511bb028a49d4c9b54108461bbe67
4 files changed