For example, CSS seems like a constraint solver that has nothing to do with parsing HTTP requests. Even parsing CSS itself has nothing to do with laying it out. Rendering is another step altogether that also has very little to do with anything. I can see these things being split into standalone and testable libraries with limited scope. Maybe I'm wrong though. I often am.
A "browser" seems like an "operating system". There is so much going on and I can see how a "browser" could be made out of myriad existing components in various amounts. A bit like the various Linux distributions and their particular choices of underlying tools and frameworks. You don't do it all at once, you got a million separate small chunks working together (if you're a Unix kind of guy..)
Maybe we should all work on creating as much small composable components as possible and then let the other guys slap a nice UI on top of it and put a bow on it. This is probably not practical, but a guy can dream.