Is the 21 million coin limit hard coded into the program?
Yes.
Or is it just a result of the reward halving every few years?
Yes.
Could someone easily change the bitcoin source code to make an inflationary coin that has no
upper bound, and the reward never halves?
Yes.
Or would major changes have to be made to the source?
No. (But you would have to take into consideration the possibility that an amount could be sent/stored/received that exceeded the number of bytes that the program uses to store it).
(I know an int64 can store a number as big as 18,446,744,073,709,551,615)
That would be uint64_t
int64_t can only store a number as big as 9,223,372,036,854,775,807
Seeing as the smallest integer unit of currency represented in the source code is the Satoshi, maximum bitcoin is a bit less than 2,100,000,000,000,000