elasticsearch powered search for npmjs.org

Shouldn' be too difficult to comprehend, let me know if there is anything weird that needs fixing/explaining!