Add linter: Make sure we explicitly open all text files using UTF-8
Summary:
...encoding in Python.
Backport of core PR13440 and PR13448
https://github.com/bitcoin/bitcoin/pull/13440/files
https://github.com/bitcoin/bitcoin/pull/13448/files
The linter has been converted to PHP and integrated into arcanist within
the same diff, as it is simple enough. It also gets improved to behave
correcty when the arguments are spead over multiple lines. It also graps
the open() call nested in another function call.
Test Plan:
./test/functional/test_runner.py arc lint --everything
Find an open() occurrence in any python file and change the encoding
to encoding='foo'.
arc lint -- <the edited file>
Check the linter returns an error where the encoding has been changed.
Reviewers: #bitcoin_abc, deadalnix
Reviewed By: #bitcoin_abc, deadalnix
Differential Revision: https://reviews.bitcoinabc.org/D3772