This PR replaces gridster.js with React-Grid-Layout.
The main advantage is that React-Grid-Layout works more smoothly, with less surprises, and lets us do nicer things than gridster.js, like having responsive dashboards or fitting the widgets properly on the screen. In the development front, React-Grid-Layout is much easier to understand, and it integrates better with React and our current application.
This PR takes care of implementing all current functionalities using React-Grid-Layout. As a new addition, I made the number of columns available variable, and depending on the user's screen size. This will allow users with large screens to fit more widgets into the dashboard, while still being able to see them when using a smaller device.