Is there a plugin or method to add legends for raster layers (with a custom colourmap) as an item in the print composer?
"Colour Scale Bar" is a plugin (QGIS contributed repository) which does this. It only works with discrete interpolation!
Once you have set up a raster layer in the way you like, you save the style (Layer|Properties... then click Save Style) and select the saved .qml file in the plugin dialogue.
The legend is saved as a PNG file, which you can then add as an image in the print composer.