Force file download on plugin activation

Working with headers is tricky because you have to call them before any output is sent, as described in the Documentation. So if you have any spaces before calling them could be it. Another problem can be if any of your code is causing an error, the error massage count as output so it will trigger headers already sent as described in the answer to this question.