[AIRFLOW-423][AIRFLOW-424][AIRFLOW-426] UX updates for PR Tool
[AIRFLOW-423][AIRFLOW-424][AIRFLOW-426] UX updates for PR Tool

Some big UX improvements to the PR tool:

AIRFLOW-423: commit messages are automatically wrapped at 50 characters. Paragraph breaks and tab indents are preserved. The first line of the commit is NOT forced to be 72 characters because handling this on subsequent lines is challenging. This is also deployed throughout the PR tool to make long status messages prettier.

https://issues.apache.org/jira/browse/AIRFLOW-423

AIRFLOW-424: this commit fixes a number of whitespace and formatting issues. It’s only contribution to functionality is that the JIRA resolution process is a little clearer.

https://issues.apache.org/jira/browse/AIRFLOW-424

AIRFLOW-426: I think this one is pretty cool. If the PR author mentions a JIRA issue anywhere in their PR (including on GitHub or buried in a commit), then the PR tool will automatically add it to the PR title. It even catches misformatted ones. So if the 20th commit mentions “AIRFLOW   - -426” somewhere in its body, you’ll still get “[AIRFLOW-426]” in the squash commit subject.

https://issues.apache.org/jira/browse/AIRFLOW-426

AIRFLOW-427: You can now run the PR tool from anywhere (previously you had to be `cd`'d to the Airflow git repo or set an env var)

https://issues.apache.org/jira/browse/AIRFLOW-427

[AIRFLOW-423] Add reflow function to PR tool

The reflow function takes a string and wraps
it to a specified width. It preserves
paragraph breaks and 4+ space indentation.

[AIRFLOW-424] Make JIRA process more clear

Small improvements to UX around
closing JIRA issues.

Also a number of whitespace edits
to clean up the PR tool code.

[AIRFLOW-426] Automatically add JIRA references in PR Tool

When squashing commits, the PR tool will automatically add a reference
to any JIRA issue found in the PR body or commits.

[AIRFLOW-427] Automatically set AIRFLOW_GIT_LOCATION

Previously, you had to run this file from the airflow git
directory unless you set an AIRFLOW_GIT env var.

Closes #1728 from jlowin/pr-tool

ledsusop/airflow,preete-dixit-ck/incubator-airflow,lyft/incubator-airflow,MortalViews/incubator-airflow,mylons/incubator-airflow,spektom/incubator-airflow,cfei18/incubator-airflow,owlabs/incubator-airflow,criccomini/airflow,rishibarve/incubator-airflow,yk5/incubator-airflow,DEVELByte/incubator-airflow,DEVELByte/incubator-airflow,sdiazb/airflow,CloverHealth/airflow,wileeam/airflow,dmitry-r/incubator-airflow,nathanielvarona/airflow,easytaxibr/airflow,btallman/incubator-airflow,caseyching/incubator-airflow,cademarkegard/airflow,stverhae/incubator-airflow,wileeam/airflow,saguziel/incubator-airflow,mtdewulf/incubator-airflow,ronfung/incubator-airflow,jgao54/airflow,N3da/incubator-airflow,subodhchhabra/airflow,dmitry-r/incubator-airflow,mtagle/airflow,apache/airflow,gtoonstra/airflow,jesusfcr/airflow,yk5/incubator-airflow,holygits/incubator-airflow,ledsusop/airflow,zodiac/incubator-airflow,plypaul/airflow,yati-sagade/incubator-airflow,mistercrunch/airflow,KL-WLCR/incubator-airflow,Tagar/incubator-airflow,yati-sagade/incubator-airflow,mrares/incubator-airflow,kerzhner/airflow,andyxhadji/incubator-airflow,mtdewulf/incubator-airflow,bolkedebruin/airflow,andyxhadji/incubator-airflow,gilt/incubator-airflow,jgao54/airflow,lxneng/incubator-airflow,MetrodataTeam/incubator-airflow,mattuuh7/incubator-airflow,danielvdende/incubator-airflow,andrewmchen/incubator-airflow,apache/airflow,MetrodataTeam/incubator-airflow,zodiac/incubator-airflow,sdiazb/airflow,jhsenjaliya/incubator-airflow,mrkm4ntr/incubator-airflow,nathanielvarona/airflow,preete-dixit-ck/incubator-airflow,gilt/incubator-airflow,DinoCow/airflow,owlabs/incubator-airflow,apache/airflow,MortalViews/incubator-airflow,cfei18/incubator-airflow,danielvdende/incubator-airflow,NielsZeilemaker/incubator-airflow,zoyahav/incubator-airflow,Twistbioscience/incubator-airflow,wileeam/airflow,criccomini/airflow,wndhydrnt/airflow,jesusfcr/airflow,owlabs/incubator-airflow,wndhydrnt/airflow,adamhaney/airflow,mattuuh7/incubator-airflow,wndhydrnt/airflow,fenglu-g/incubator-airflow,gritlogic/incubator-airflow,dhuang/incubator-airflow,DEVELByte/incubator-airflow,cademarkegard/airflow,jbhsieh/incubator-airflow,ledsusop/airflow,ProstoMaxim/incubator-airflow,lxneng/incubator-airflow,sid88in/incubator-airflow,AllisonWang/incubator-airflow,mylons/incubator-airflow,alexvanboxel/airflow,andyxhadji/incubator-airflow,DinoCow/airflow,jiwang576/incubator-airflow,adamhaney/airflow,Tagar/incubator-airflow,nathanielvarona/airflow,adrpar/incubator-airflow,jlowin/airflow,jiwang576/incubator-airflow,easytaxibr/airflow,skudriashev/incubator-airflow,ProstoMaxim/incubator-airflow,cjqian/incubator-airflow,fenglu-g/incubator-airflow,sergiohgz/incubator-airflow,akosel/incubator-airflow,akosel/incubator-airflow,sekikn/incubator-airflow,OpringaoDoTurno/airflow,yati-sagade/incubator-airflow,jiwang576/incubator-airflow,sid88in/incubator-airflow,vineet-rh/incubator-airflow,jhsenjaliya/incubator-airflow,mrkm4ntr/incubator-airflow,apache/airflow,sid88in/incubator-airflow,DinoCow/airflow,KL-WLCR/incubator-airflow,dhuang/incubator-airflow,ProstoMaxim/incubator-airflow,wileeam/airflow,holygits/incubator-airflow,vineet-rh/incubator-airflow,btallman/incubator-airflow,gritlogic/incubator-airflow,forevernull/incubator-airflow,asnir/airflow,mistercrunch/airflow,zack3241/incubator-airflow,RealImpactAnalytics/airflow,asnir/airflow,artwr/airflow,CloverHealth/airflow,asnir/airflow,Tagar/incubator-airflow,cademarkegard/airflow,kerzhner/airflow,hgrif/incubator-airflow,akosel/incubator-airflow,airbnb/airflow,juvoinc/airflow,jbhsieh/incubator-airflow,r39132/airflow,cjqian/incubator-airflow,sergiohgz/incubator-airflow,dmitry-r/incubator-airflow,bolkedebruin/airflow,skudriashev/incubator-airflow,preete-dixit-ck/incubator-airflow,airbnb/airflow,Tagar/incubator-airflow,wolfier/incubator-airflow,mtagle/airflow,ProstoMaxim/incubator-airflow,mtdewulf/incubator-airflow,yati-sagade/incubator-airflow,edgarRd/incubator-airflow,wndhydrnt/airflow,AllisonWang/incubator-airflow,gilt/incubator-airflow,malmiron/incubator-airflow,gtoonstra/airflow,cjqian/incubator-airflow,kerzhner/airflow,N3da/incubator-airflow,ronfung/incubator-airflow,Twistbioscience/incubator-airflow,Fokko/incubator-airflow,artwr/airflow,skudriashev/incubator-airflow,kerzhner/airflow,sekikn/incubator-airflow,brandsoulmates/incubator-airflow,gtoonstra/airflow,RealImpactAnalytics/airflow,lyft/incubator-airflow,juvoinc/airflow,apache/airflow,mylons/incubator-airflow,ronfung/incubator-airflow,Twistbioscience/incubator-airflow,subodhchhabra/airflow,zack3241/incubator-airflow,r39132/airflow,hamedhsn/incubator-airflow,jhsenjaliya/incubator-airflow,janczak10/incubator-airflow,stverhae/incubator-airflow,easytaxibr/airflow,aminghadersohi/airflow,caseyching/incubator-airflow,hamedhsn/incubator-airflow,cfei18/incubator-airflow,bolkedebruin/airflow,juvoinc/airflow,saguziel/incubator-airflow,sekikn/incubator-airflow,adrpar/incubator-airflow,hamedhsn/incubator-airflow,MetrodataTeam/incubator-airflow,jiwang576/incubator-airflow,subodhchhabra/airflow,mtagle/airflow,janczak10/incubator-airflow,mtagle/airflow,danielvdende/incubator-airflow,apache/incubator-airflow,Fokko/incubator-airflow,owlabs/incubator-airflow,andrewmchen/incubator-airflow,Acehaidrey/incubator-airflow,OpringaoDoTurno/airflow,wolfier/incubator-airflow,sergiohgz/incubator-airflow,airbnb/airflow,gritlogic/incubator-airflow,sekikn/incubator-airflow,janczak10/incubator-airflow,malmiron/incubator-airflow,apache/airflow,lyft/incubator-airflow,caseyching/incubator-airflow,fenglu-g/incubator-airflow,jesusfcr/airflow,mylons/incubator-airflow,wooga/airflow,dhuang/incubator-airflow,dmitry-r/incubator-airflow,Acehaidrey/incubator-airflow,preete-dixit-ck/incubator-airflow,N3da/incubator-airflow,akosel/incubator-airflow,andrewmchen/incubator-airflow,edgarRd/incubator-airflow,MetrodataTeam/incubator-airflow,jbhsieh/incubator-airflow,plypaul/airflow,nathanielvarona/airflow,mrkm4ntr/incubator-airflow,gritlogic/incubator-airflow,ronfung/incubator-airflow,Fokko/incubator-airflow,mattuuh7/incubator-airflow,Acehaidrey/incubator-airflow,jgao54/airflow,vijaysbhat/incubator-airflow,Fokko/incubator-airflow,Acehaidrey/incubator-airflow,malmiron/incubator-airflow,subodhchhabra/airflow,CloverHealth/airflow,KL-WLCR/incubator-airflow,jbhsieh/incubator-airflow,zack3241/incubator-airflow,jfantom/incubator-airflow,alexvanboxel/airflow,RealImpactAnalytics/airflow,jlowin/airflow,jgao54/airflow,mistercrunch/airflow,zoyahav/incubator-airflow,hamedhsn/incubator-airflow,holygits/incubator-airflow,gilt/incubator-airflow,andyxhadji/incubator-airflow,janczak10/incubator-airflow,vijaysbhat/incubator-airflow,adamhaney/airflow,dgies/incubator-airflow,apache/incubator-airflow,hgrif/incubator-airflow,MortalViews/incubator-airflow,lxneng/incubator-airflow,malmiron/incubator-airflow,jlowin/airflow,danielvdende/incubator-airflow,dgies/incubator-airflow,danielvdende/incubator-airflow,sdiazb/airflow,saguziel/incubator-airflow,vijaysbhat/incubator-airflow,spektom/incubator-airflow,holygits/incubator-airflow,zack3241/incubator-airflow,DEVELByte/incubator-airflow,bolkedebruin/airflow,rishibarve/incubator-airflow,zodiac/incubator-airflow,jfantom/incubator-airflow,hgrif/incubator-airflow,OpringaoDoTurno/airflow,vineet-rh/incubator-airflow,wolfier/incubator-airflow,r39132/airflow,NielsZeilemaker/incubator-airflow,danielvdende/incubator-airflow,jesusfcr/airflow,rishibarve/incubator-airflow,MortalViews/incubator-airflow,nathanielvarona/airflow,dgies/incubator-airflow,zodiac/incubator-airflow,jfantom/incubator-airflow,apache/incubator-airflow,aminghadersohi/airflow,ledsusop/airflow,wolfier/incubator-airflow,zoyahav/incubator-airflow,hgrif/incubator-airflow,skudriashev/incubator-airflow,bolkedebruin/airflow,btallman/incubator-airflow,KL-WLCR/incubator-airflow,wooga/airflow,DinoCow/airflow,r39132/airflow,mrares/incubator-airflow,saguziel/incubator-airflow,lxneng/incubator-airflow,Acehaidrey/incubator-airflow,yk5/incubator-airflow,cademarkegard/airflow,forevernull/incubator-airflow,jlowin/airflow,cjqian/incubator-airflow,jfantom/incubator-airflow,stverhae/incubator-airflow,adrpar/incubator-airflow,forevernull/incubator-airflow,AllisonWang/incubator-airflow,artwr/airflow,spektom/incubator-airflow,Twistbioscience/incubator-airflow,edgarRd/incubator-airflow,mrares/incubator-airflow,aminghadersohi/airflow,caseyching/incubator-airflow,nathanielvarona/airflow,spektom/incubator-airflow,brandsoulmates/incubator-airflow,apache/incubator-airflow,gtoonstra/airflow,criccomini/airflow,fenglu-g/incubator-airflow,brandsoulmates/incubator-airflow,wooga/airflow,andrewmchen/incubator-airflow,mistercrunch/airflow,adrpar/incubator-airflow,zoyahav/incubator-airflow,aminghadersohi/airflow,rishibarve/incubator-airflow,sid88in/incubator-airflow,dhuang/incubator-airflow,cfei18/incubator-airflow,cfei18/incubator-airflow,N3da/incubator-airflow,sdiazb/airflow,asnir/airflow,jhsenjaliya/incubator-airflow,btallman/incubator-airflow,stverhae/incubator-airflow,vijaysbhat/incubator-airflow,juvoinc/airflow,criccomini/airflow,brandsoulmates/incubator-airflow,artwr/airflow,mtdewulf/incubator-airflow,plypaul/airflow,cfei18/incubator-airflow,alexvanboxel/airflow,edgarRd/incubator-airflow,mrares/incubator-airflow,easytaxibr/airflow,lyft/incubator-airflow,OpringaoDoTurno/airflow,dgies/incubator-airflow,plypaul/airflow,mrkm4ntr/incubator-airflow,AllisonWang/incubator-airflow,wooga/airflow,mattuuh7/incubator-airflow,Acehaidrey/incubator-airflow,NielsZeilemaker/incubator-airflow,NielsZeilemaker/incubator-airflow,alexvanboxel/airflow,CloverHealth/airflow,vineet-rh/incubator-airflow,forevernull/incubator-airflow,RealImpactAnalytics/airflow,sergiohgz/incubator-airflow,airbnb/airflow,yk5/incubator-airflow,adamhaney/airflow