move solve() and process() up to MFProject
add MFMechanicalProject and a simple implementation
relax PostProcessor.value() input type range