I think this is a measurement unit error, your internet speed is measured in kilobits while uploads and downloads tend to be measured in kilobytes, this causes confusion and pain to users who (quite rightfully) expect these things to be measured in the same way.
Your internet upstream speed is 800-950 kilobits, we divide this by 8 to get speed in kilobytes:
950 / 8 = 118.75 kilobytes
To me this sounds very much like the speed you are getting, ignoring random jumps to 200kbps which could simply be due to bursts, stalls, measurement errors or other freak occurrences.
The upshot of this is that your internet connection, computer and network are fine, the down side is that you are fully saturating your internet connection and that is making it difficult for website requests and downloaded data acknowledgments to get through.
I would recommend finding some bandwidth management software and try halving the speed you are uploading at, if suddenly everything is more responsive then your problem is well and truly a saturated internet pipe.
Just thought I would add some details regarding why saturating your internet connection causes slow response times for normal browsing...
Almost all programs that deal with the network will be working through some kind of FIFO ("First In, First Out") buffer, which basically means that there is a queue of data to come into the machine and a queue of data going out of the machine.
Typically for all the incoming data any program that is expecting data is able to empty their incoming buffer pretty quickly and send a small "acknowledge" packet back to request the next block of data. That acknowledge gets put on the outgoing queue and, as typically there isn't much outgoing traffic makes it to the front of the outgoing queue pretty much instantaneously and so the cycle of download and acknowledge continues.
This FIFO queue becomes a problem when you start uploading. Lets say that Window might have a queue of 400 kilobytes, I don't know for sure but it seems a reasonable number these days. What that means is when you upload a small file of say 200 kilobytes then it will get pushed onto the queue and the program can continue on and assume the data has been sent or at least will be gone quite quickly, say 1-2 seconds at most, hardly noticeable really.
When you start uploading larger files though this queue becomes a bottleneck, one program filling this queue as fast as it is allowed to will mean that another program that just wants to send one small "give me this web page" request will have to wait for one full turn through the entire length of the queue which, with a 400 kilobyte queue at about 125 kilobytes bandwidth means that it will take at least 3 seconds before it gets to the front and has left the queue, it might receive a block of data back quite quickly as the downstream buffer is pretty empty but then the "send me more data" request will take another 3 seconds before it can make its way out of the queue again.
It's all the time waiting in the queue that will cause the website requests to timeout while uploading data, most sites and browsers are tuned to expect the turnaround to be under a second from the request of data to starting to receive it so having this big buffer in the way causes markedly larger delays than they expect. As that queue buffer gets larger so does the time for any request to make it through the queue and out onto the actual internet.
When you limit the bandwidth of any given program what you are effectively doing is slowing the rate that that program can put the data on the queue, this means that the queue can be emptied at a rate faster than it is being filled and prevents the queue from getting full. Any other program that puts data or a request on the queue can expect a shorter time for it to reach the front of the queue (as it is no longer anywhere near full) and so the connection seems to "just work better".
Wow, that was longer than I expected.