3D finite-difference frequency-domain method for plasmonics and nanophotonics