I write a lot of user scripts and couldn't live without being able to tweak websites to add features, or more often, fix their problems - I just checked Tampermonkey and I've currently got 40 user scripts for various sites :)
There are a lot faster ways to write them now using features from HTML5 and now ES6 which weren't there even a year ago - for instance, your password script can be rewritten in one line
Array.from(document.querySelectorAll('input[type=password][autocomplete=off]')).forEach(elem => { elem.autocomplete = 'on' })
using arrow functions, Array.from and querySelectorAll .
If you use Chrome this currently only works in the development version, so for the next few months until that's released you can write
[].slice.call(document.querySelectorAll('input[type=password][autocomplete=off]')).forEach(function(elem) { elem.autocomplete = 'on' })
instead.
If instead you want to insert HTML, using template strings and insertAdjacentHTML again make life easier, e.g.
Array.from(document.querySelectorAll('a[href$=".jpg"]')).forEach(a => { a.insertAdjacentHTML('afterbegin', `<img src="${a.href}" style="width: 32px; height: 32px; margin-right: 0.5em">`) })
matches links with targets ending in .jpg, then prepends a 32x32 pixel sized copy of the linked image to each!
About 90% of user scripts are just
find things -> loop over them -> adjust properties and/or edit HTML
so it's handy having simpler ways of writing it :) Hope that was helpful, I keep meaning to write an article on advanced techniques for writing user scripts and not doing it...