Backtrace RDD dependency tree to find parent RDDs associated with a Stage

The Stage boundary is marked by shuffle dependencies. When one or more RDD
are related by narrow dependencies, they should all be associated with the
same Stage. Following backward narrow dependency pointers allows StageInfo
to hold the information of all relevant RDDs, rather than just the last one
associated with the Stage.

This commit also moves RDDInfo to its own file.