b=880492 use GCC's typeof when decltype is not available r=Waldo

--HG--
extra : transplant_source : %F89%13%B2%E9%C7%99C%82%0D%E2C%2C%5E%A8%06Uo%B6%9A
b=810274 include bounds with layer pixels as possible destinations to minimize subpixel scrolls r=roc

--HG--
extra : transplant_source : %3BkY-X%D0%60lwm%C5XN%BEo%CA%AF%0E%10%08
b=810274 allow smooth scroll step to nearest pixel boundary short of desired position r=roc

--HG--
extra : transplant_source : %07%FC%14%84%D6%80%BD%5C%ECe%05%0D%8F%B3%0E%8F%7B%F8%90%1E