Update urlFor() to support optional parameters
Update urlFor() to support optional parameters

This is done by using the FastRoute parser to determine the segments and parameters
for each possible URI that can be generated for this named route. We test the most
specific first and work out way back to the least specific, so that we can handle
optional parameters.

Closes #1289.

akrabat/Slim,designermonkey/Slim,JoeBengalen/Slim,jaapverloop/Slim,RealSelf/Slim,juliangut/Slim,samsonasik/Slim,iinux/Slim,Sam-Burns/Slim,mnapoli/Slim,dopesong/Slim,feryardiant/slim,opengeek/Slim,iinux/Slim,AndrewCarterUK/Slim,iinux/Slim,slimphp/Slim,foxyantho/Slim,somjit2514/basic