Move friendly id path calculation into a separate class.
Move friendly id path calculation into a separate class.

louim/refinerycms,chrise86/refinerycms,johanb/refinerycms,louim/refinerycms,hoopla-software/refinerycms,trevornez/refinerycms,LytayTOUCH/refinerycms,gwagener/refinerycms,sideci-sample/sideci-sample-refinerycms,hoopla-software/refinerycms,Retimont/refinerycms,bricesanchez/refinerycms,johanb/refinerycms,KingLemuel/refinerycms,kappiah/refinerycms,sideci-sample/sideci-sample-refinerycms,hoopla-software/refinerycms,simi/refinerycms,mlinfoot/refinerycms,KingLemuel/refinerycms,mabras/refinerycms,refinery/refinerycms,LytayTOUCH/refinerycms,chrise86/refinerycms,aguzubiaga/refinerycms,mlinfoot/refinerycms,gwagener/refinerycms,Eric-Guo/refinerycms,KingLemuel/refinerycms,anitagraham/refinerycms,kappiah/refinerycms,Retimont/refinerycms,gwagener/refinerycms,aguzubiaga/refinerycms,mkaplan9/refinerycms,simi/refinerycms,mlinfoot/refinerycms,simi/refinerycms,stefanspicer/refinerycms,aguzubiaga/refinerycms,kappiah/refinerycms,refinery/refinerycms,stefanspicer/refinerycms,Eric-Guo/refinerycms,trevornez/refinerycms,LytayTOUCH/refinerycms,mabras/refinerycms,mabras/refinerycms,johanb/refinerycms,simi/refinerycms,mkaplan9/refinerycms,chrise86/refinerycms,mkaplan9/refinerycms,Retimont/refinerycms,bricesanchez/refinerycms,anitagraham/refinerycms,Eric-Guo/refinerycms,anitagraham/refinerycms,stefanspicer/refinerycms,trevornez/refinerycms,refinery/refinerycms