mobile browser detection middleware; closes #31