SPARK-1830 Deploy failover, Make Persistence engine and LeaderAgent Pluggable

I kept ClassTag so that if someone extends this method he can control how read behaves based on Whether its ApplicationInfo/WorkerInfo/ etc... . Such a thing would be impossible otherwise - since we are making other methods as final. I am not sure if that would be absolutely necessary.  Thoughts?