added retail web client

we now have one retail base class and two subclasses for web and app
(on iOS), that's because they have a slightly different workflow
(different steps, queue numbers, disconnects, resets…)
Merge branch 'retail-web'